"use client"; import DataTableWithAuth from "@/core/components/DataTableWithAuth"; import { GET_USER_LIST } from "@/core/utils/routes"; import { Box, Stack } from "@mui/material"; import { useMemo } from "react"; import RowActions from "./RowActions"; import Toolbar from "./Toolbar"; import useProvinces from "@/lib/hooks/useProvince"; import CustomSelectByDependency from "@/core/components/DataTable/filter/fieldsType/CustomSelectByDependency"; import { Power, PowerOff } from "@mui/icons-material"; import useRoles from "@/lib/hooks/useRoles"; import OnlineCell from "./RowActions/Online"; import TelephoneId from "./RowActions/TelephoneId"; const DataTable = () => { const columns = useMemo( () => [ { accessorKey: "id", header: "کد یکتا", id: "id", enableColumnFilter: true, datatype: "text", filterMode: "equals", sortDescFirst: false, columnFilterModeOptions: ["equals", "contains"], grow: false, size: 100, }, { header: "استان", id: "province_id", enableColumnFilter: true, datatype: "numeric", filterMode: "equals", grow: false, size: 130, ColumnSelectComponent: (props) => { const { provinces, errorProvinces, loadingProvinces } = useProvinces(); const getColumnSelectOptions = useMemo(() => { if (loadingProvinces) { return [{ value: "loading", label: "در حال بارگذاری..." }]; } if (errorProvinces) { return [{ value: "error", label: "خطا در بارگذاری" }]; } return [ { value: "", label: "کل کشور" }, ...provinces.map((province) => ({ value: province.id, label: province.name, })), ]; }, [provinces, errorProvinces, loadingProvinces]); return ( ); }, Cell: ({ renderedCellValue, row }) => <>{row.original.province_fa}, }, { header: "شماره تماس داخلی", id: "telephone_id", enableColumnFilter: true, datatype: "text", filterMode: "equals", sortDescFirst: false, columnFilterModeOptions: ["equals", "contains"], grow: false, size: 100, Cell: ({ row }) => , }, { accessorKey: "username", header: "نام کاربری", id: "username", enableColumnFilter: true, datatype: "text", filterMode: "equals", sortDescFirst: false, columnFilterModeOptions: ["equals", "contains"], grow: false, size: 100, }, { accessorKey: "position", header: "سمت", id: "position", enableColumnFilter: false, grow: false, size: 100, }, { accessorKey: "phone_number", header: "شماره همراه", id: "phone_number", enableColumnFilter: false, grow: false, size: 100, }, { header: "نقش", id: "role__id", enableColumnFilter: false, grow: false, size: 100, enableColumnFilter: true, datatype: "numeric", filterMode: "equals", grow: false, size: 130, ColumnSelectComponent: (props) => { const { roles, errorRoles, loadingRoles } = useRoles(); const getColumnSelectOptions = useMemo(() => { if (loadingRoles) { return [{ value: "loading", label: "در حال بارگذاری..." }]; } if (errorRoles) { return [{ value: "error", label: "خطا در بارگذاری" }]; } return [ { value: "", label: "همه نقش ها" }, ...roles.map((role) => ({ value: role.id, label: role.name_fa, })), ]; }, [roles, errorRoles, loadingRoles]); return ( ); }, Cell: ({ row }) => <>{row.original.roles[0].name_fa}, }, { accessorKey: "national_id", header: "کد ملی", id: "national_id", enableColumnFilter: true, datatype: "text", filterMode: "equals", sortDescFirst: false, columnFilterModeOptions: ["equals", "contains"], grow: false, size: 100, }, { accessorKey: "is_online", header: "وضعیت برخط", id: "is_online", enableColumnFilter: true, datatype: "text", filterMode: "equals", sortDescFirst: false, columnFilterModeOptions: ["equals", "contains"], grow: false, size: 100, Cell: ({ row }) => , }, { accessorKey: "gender", header: "جنسیت", id: "gender", enableColumnFilter: false, grow: false, size: 100, Cell: ({ renderedCellValue }) => ( <>{renderedCellValue == "male" ? "آقا" : "خانم"} ), }, ], [], ); return ( <> ); }; export default DataTable;