From 9eca3ae9fce42c176bc3f00aa13925a49db16fb6 Mon Sep 17 00:00:00 2001
From: Swapnil Bendal <84583651+Swapnil155@users.noreply.github.com>
Date: Fri, 27 Dec 2024 15:22:34 +0530
Subject: [PATCH] [update] - pagination on investor details
---
src/Components/Pagination.jsx | 2 +-
src/Constants/Paginations.js | 3 +-
.../InvestorDetails/InvestorDetails.jsx | 168 +++++++++---------
3 files changed, 84 insertions(+), 89 deletions(-)
diff --git a/src/Components/Pagination.jsx b/src/Components/Pagination.jsx
index 488775d..78d914d 100644
--- a/src/Components/Pagination.jsx
+++ b/src/Components/Pagination.jsx
@@ -49,7 +49,7 @@ const Pagination = ({
value={pageSize}
onChange={handlePageSizeChange}
>
- {[15, 20, 30]?.map((size) => (
+ {[15, 20, 30, 500]?.map((size) => (
diff --git a/src/Constants/Paginations.js b/src/Constants/Paginations.js
index e657279..8c134dc 100644
--- a/src/Constants/Paginations.js
+++ b/src/Constants/Paginations.js
@@ -1,2 +1,3 @@
export const TABLE_PAGINATION = { page: 1, size: 20 }
-export const IMAGE_URI = import.meta.env.VITE_API_IMAGE_URL
\ No newline at end of file
+export const IMAGE_URI = import.meta.env.VITE_API_IMAGE_URL
+export const INVESTOR_TABLE_PAGINATION = { page: 1, size: 500 }
\ No newline at end of file
diff --git a/src/Pages/Investor_Management/InvestorDetails/InvestorDetails.jsx b/src/Pages/Investor_Management/InvestorDetails/InvestorDetails.jsx
index 69abf45..d0f3683 100644
--- a/src/Pages/Investor_Management/InvestorDetails/InvestorDetails.jsx
+++ b/src/Pages/Investor_Management/InvestorDetails/InvestorDetails.jsx
@@ -1,5 +1,5 @@
+import { ViewIcon } from "@chakra-ui/icons";
import {
- Avatar,
Badge,
Box,
Button,
@@ -11,23 +11,21 @@ import {
useDisclosure,
useToast,
} from "@chakra-ui/react";
-import React, { useContext, useEffect, useState, useRef } from "react";
-import { OPACITY_ON_LOAD } from "../../../Layout/animations";
-import NormalTable from "../../../Components/DataTable/NormalTable";
-import { Link, Link as RouterLink, useNavigate } from "react-router-dom";
-import {
- ViewIcon,
-} from "@chakra-ui/icons";
-import Pagination from "../../../Components/Pagination";
-import GlobalStateContext from "../../../Contexts/GlobalStateContext";
-import CustomAlertDialog from "../../../Components/CustomAlertDialog";
-import ToastBox from "../../../Components/ToastBox";
-import { debounce } from "../../Master/Sponser/AddSponser";
-import InvestmentDetailsEdit from "./InvestmentDetailsEdit";
-import { useGetInvestorsQuery } from "../../../Services/investor.details.service";
-import { TABLE_PAGINATION } from "../../../Constants/Paginations";
-import { exportToExcel, exportToExcelNew, generateSerialNumber } from "../../../Constants/Constants";
+import React, { useContext, useEffect, useRef, useState } from "react";
import { LuFileSpreadsheet } from "react-icons/lu";
+import { useNavigate } from "react-router-dom";
+import CustomAlertDialog from "../../../Components/CustomAlertDialog";
+import NormalTable from "../../../Components/DataTable/NormalTable";
+import Pagination from "../../../Components/Pagination";
+import {
+ exportToExcelNew,
+ generateSerialNumber,
+} from "../../../Constants/Constants";
+import { INVESTOR_TABLE_PAGINATION } from "../../../Constants/Paginations";
+import GlobalStateContext from "../../../Contexts/GlobalStateContext";
+import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+import { useGetInvestorsQuery } from "../../../Services/investor.details.service";
+import InvestmentDetailsEdit from "./InvestmentDetailsEdit";
const formatDate = (date) => new Date(date).toLocaleDateString(); // Simple date formatter
@@ -49,10 +47,11 @@ const InvestorDetails = () => {
} = useDisclosure();
const btnRef = React.useRef();
-
- // =========================== [Use State] =============================
- const [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size);
- const [currentPage, setCurrentPage] = useState(TABLE_PAGINATION?.page);
+ // =========================== [Use State] =============================
+ const [pageSize, setPageSize] = useState(INVESTOR_TABLE_PAGINATION?.size);
+ const [currentPage, setCurrentPage] = useState(
+ INVESTOR_TABLE_PAGINATION?.page
+ );
const [searchTerm, setSearchTerm] = useState("");
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
@@ -73,20 +72,19 @@ const InvestorDetails = () => {
data: investorDetails,
isLoading: investorDetailsLoading,
error,
- } = useGetInvestorsQuery({
- page: debouncedSearchTerm ? undefined : currentPage, // Omit pagination for search
- size: debouncedSearchTerm ? undefined : pageSize, // Omit pagination for search userStatus KYCStatus investorType_xid
- search: debouncedSearchTerm,
- userStatus: status,
- KYCStatus: kyc,
- country_xid: country
-
- },
- {
- skip: debouncedSearchTerm === "" && searchTerm !== "", // Skip if search is empty and it's not the initial request
- }
-);
-
+ } = useGetInvestorsQuery(
+ {
+ page: debouncedSearchTerm ? undefined : currentPage, // Omit pagination for search
+ size: debouncedSearchTerm ? undefined : pageSize, // Omit pagination for search userStatus KYCStatus investorType_xid
+ search: debouncedSearchTerm,
+ userStatus: status,
+ KYCStatus: kyc,
+ country_xid: country,
+ },
+ {
+ skip: debouncedSearchTerm === "" && searchTerm !== "", // Skip if search is empty and it's not the initial request
+ }
+ );
useEffect(() => {
// Simulate loading
@@ -104,43 +102,41 @@ const InvestorDetails = () => {
"Client ID",
"First Name",
"Last Name",
- "Country",
+ "Country",
"Phone Number",
"E-mail ID",
- "Type",
+ "Type",
"KYC Status",
"Status",
"Action",
];
-
// ====================================================[Table Filter]================================================================
const exportInvestor = investorDetails?.data?.rows?.map((item, idx) => ({
- "Id": parseInt(item?.id, 10) || item?.id, // Convert to integer, fallback to string if conversion fails
+ Id: parseInt(item?.id, 10) || item?.id, // Convert to integer, fallback to string if conversion fails
"Client ID": item?.clientReference_id, // This is likely a string
"First Name": item?.principal?.firstName,
"Last Name": item?.principal?.lastName,
- "Country": item?.country?.countryName,
+ Country: item?.country?.countryName,
"Phone Number": item?.principal?.mobileNumber, // Skipping integer conversion, as this is likely a string
"E-mail ID": item?.principal?.emailAddress,
- "Type": item?.investor_type?.investorTypeName,
- "Status": item.ioStatus ? "Ban" : "Unban",
- "KYC Status": item.KYCStatus ? "Completed" : "Not complete"
+ Type: item?.investor_type?.investorTypeName,
+ Status: item.ioStatus ? "Ban" : "Unban",
+ "KYC Status": item.KYCStatus ? "Completed" : "Not complete",
}));
const extractedArray = investorDetails?.data?.rows?.map((item, idx) => ({
id: item?.id,
"Sr No": (
{/* {item.id} */}
- {generateSerialNumber(idx,currentPage, pageSize )}
-
+ {generateSerialNumber(idx, currentPage, pageSize)}
),
"Client ID": (
@@ -148,7 +144,7 @@ const InvestorDetails = () => {
{item.clientReference_id}
-
+
),
"First Name": (
@@ -185,39 +181,44 @@ const InvestorDetails = () => {
),
- "Type": (
+ Type: (
-
-
+
+
{item?.investor_type?.investorTypeName}
),
Status: (
-
-
- {item.ioStatus ? "Ban" : "Unban"}
-
-
+
+
+ {item.ioStatus ? "Ban" : "Unban"}
+
+
),
"KYC Status": (
-
+
{/* {item.KYCStatus ? "Completed" : "Not complete"} */}
{item?.KYCStatus === true ? "Completed" : "NotCompleted"}
@@ -235,7 +236,7 @@ const InvestorDetails = () => {
placement="top"
>