| 1 |
3b7feef |
Mrdn |
2y ago |
import { ColumnDef } from "@tanstack/react-table" |
| 2 |
3b7feef |
Mrdn |
2y ago |
import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header" |
| 3 |
3b7feef |
Mrdn |
2y ago |
import i18n from "@marzneshin/features/i18n" |
| 4 |
857e289 |
Mrdn |
2y ago |
import { |
| 5 |
857e289 |
Mrdn |
2y ago |
UserType, |
| 6 |
857e289 |
Mrdn |
2y ago |
UsersStatus, |
| 7 |
857e289 |
Mrdn |
2y ago |
UsersStatusBadge |
| 8 |
857e289 |
Mrdn |
2y ago |
} from "@marzneshin/features/users" |
| 9 |
3b7feef |
Mrdn |
2y ago |
import { CircularProgress } from "@nextui-org/progress"; |
| 10 |
3b7feef |
Mrdn |
2y ago |
import { format } from "date-fns"; |
| 11 |
3b7feef |
Mrdn |
2y ago |
import { Badge } from "@marzneshin/components"; |
| 12 |
3b7feef |
Mrdn |
2y ago |
|
| 13 |
3b7feef |
Mrdn |
2y ago |
export const columns: ColumnDef<UserType>[] = [ |
| 14 |
3b7feef |
Mrdn |
2y ago |
{ |
| 15 |
3b7feef |
Mrdn |
2y ago |
accessorKey: "username", |
| 16 |
3b7feef |
Mrdn |
2y ago |
header: ({ column }) => <DataTableColumnHeader title={i18n.t('username')} column={column} />, |
| 17 |
3b7feef |
Mrdn |
2y ago |
}, |
| 18 |
857e289 |
Mrdn |
2y ago |
{ |
| 19 |
857e289 |
Mrdn |
2y ago |
accessorKey: 'status', |
| 20 |
857e289 |
Mrdn |
2y ago |
header: ({ column }) => <DataTableColumnHeader title={i18n.t('status')} column={column} />, |
| 21 |
857e289 |
Mrdn |
2y ago |
cell: ({ row }) => <UsersStatusBadge status={UsersStatus[row.original.status ? row.original.status : 'error']} />, |
| 22 |
857e289 |
Mrdn |
2y ago |
}, |
| 23 |
3b7feef |
Mrdn |
2y ago |
{ |
| 24 |
3b7feef |
Mrdn |
2y ago |
accessorKey: "used_traffic", |
| 25 |
3b7feef |
Mrdn |
2y ago |
header: ({ column }) => <DataTableColumnHeader title={i18n.t('page.users.used_traffic')} column={column} />, |
| 26 |
3b7feef |
Mrdn |
2y ago |
cell: ({ row }) => { |
| 27 |
3b7feef |
Mrdn |
2y ago |
if (row.original.data_limit) { |
| 28 |
3b7feef |
Mrdn |
2y ago |
return ( |
| 29 |
3b7feef |
Mrdn |
2y ago |
<CircularProgress |
| 30 |
3b7feef |
Mrdn |
2y ago |
size="sm" |
| 31 |
3b7feef |
Mrdn |
2y ago |
value={row.original.used_traffic / row.original.data_limit * 100} |
| 32 |
3b7feef |
Mrdn |
2y ago |
/> |
| 33 |
3b7feef |
Mrdn |
2y ago |
) |
| 34 |
3b7feef |
Mrdn |
2y ago |
} else { |
| 35 |
3b7feef |
Mrdn |
2y ago |
return <Badge>No Limit</Badge> |
| 36 |
3b7feef |
Mrdn |
2y ago |
} |
| 37 |
3b7feef |
Mrdn |
2y ago |
}, |
| 38 |
3b7feef |
Mrdn |
2y ago |
sortingFn: (rowA, rowB) => { |
| 39 |
3b7feef |
Mrdn |
2y ago |
if (rowA.original.data_limit && rowB.original.data_limit) { |
| 40 |
3b7feef |
Mrdn |
2y ago |
const rowAUsedTraffic = (rowA.original.used_traffic / rowA.original.data_limit) * 100 |
| 41 |
3b7feef |
Mrdn |
2y ago |
const rowBUsedTraffic = (rowA.original.used_traffic / rowA.original.data_limit) * 100 |
| 42 |
3b7feef |
Mrdn |
2y ago |
return rowAUsedTraffic > rowBUsedTraffic ? 1 : rowBUsedTraffic > rowAUsedTraffic ? -1 : 0 |
| 43 |
3b7feef |
Mrdn |
2y ago |
} else { |
| 44 |
3b7feef |
Mrdn |
2y ago |
return 0 |
| 45 |
3b7feef |
Mrdn |
2y ago |
} |
| 46 |
3b7feef |
Mrdn |
2y ago |
} |
| 47 |
3b7feef |
Mrdn |
2y ago |
}, |
| 48 |
3b7feef |
Mrdn |
2y ago |
{ |
| 49 |
3b7feef |
Mrdn |
2y ago |
accessorKey: 'expire', |
| 50 |
3b7feef |
Mrdn |
2y ago |
header: ({ column }) => <DataTableColumnHeader title={i18n.t('expire')} column={column} />, |
| 51 |
53ebdec |
Mrdn |
2y ago |
cell: ({ row }) => row.original.expire && format(row.original.expire, "PPP") |
| 52 |
3b7feef |
Mrdn |
2y ago |
} |
| 53 |
3b7feef |
Mrdn |
2y ago |
]; |