Create a seprate file for export functionality in employee.
This commit is contained in:
parent
79ac3ee481
commit
33033dea9d
84
src/components/Employee/handleEmployeeExport.jsx
Normal file
84
src/components/Employee/handleEmployeeExport.jsx
Normal file
@ -0,0 +1,84 @@
|
||||
import moment from "moment";
|
||||
import { exportToExcel, exportToCSV, exportToPDF, printTable } from "../../utils/tableExportUtils";
|
||||
|
||||
/**
|
||||
* Handles export operations for employee data.
|
||||
* @param {string} type - Export type: 'csv', 'excel', 'pdf', or 'print'
|
||||
* @param {Array} employeeList - Full employee data array
|
||||
* @param {Array} filteredData - Filtered employee data (if search applied)
|
||||
* @param {string} searchText - Current search text (used to decide dataset)
|
||||
* @param {RefObject} tableRef - Table reference (used for print)
|
||||
*/
|
||||
const handleEmployeeExport = (type, employeeList, filteredData, searchText, tableRef) => {
|
||||
// Export full list (filtered if search applied)
|
||||
const dataToExport = searchText ? filteredData : employeeList;
|
||||
|
||||
if (!dataToExport || dataToExport.length === 0) return;
|
||||
|
||||
// Map and format employee data for export
|
||||
const exportData = dataToExport.map((item) => ({
|
||||
"First Name": item.firstName || "",
|
||||
"Middle Name": item.middleName || "",
|
||||
"Last Name": item.lastName || "",
|
||||
"Email": item.email || "",
|
||||
"Gender": item.gender || "",
|
||||
"Birth Date": item.birthdate
|
||||
? moment(item.birthdate).format("DD-MMM-YYYY")
|
||||
: "",
|
||||
"Joining Date": item.joiningDate
|
||||
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
||||
: "",
|
||||
"Permanent Address": item.permanentAddress || "",
|
||||
"Current Address": item.currentAddress || "",
|
||||
"Phone Number": item.phoneNumber || "",
|
||||
"Emergency Phone Number": item.emergencyPhoneNumber || "",
|
||||
"Emergency Contact Person": item.emergencyContactPerson || "",
|
||||
"Is Active": item.isActive ? "Active" : "Inactive",
|
||||
"Job Role": item.jobRole || "",
|
||||
}));
|
||||
|
||||
switch (type) {
|
||||
case "csv":
|
||||
exportToCSV(exportData, "employees");
|
||||
break;
|
||||
|
||||
case "excel":
|
||||
exportToExcel(exportData, "employees");
|
||||
break;
|
||||
|
||||
case "pdf":
|
||||
exportToPDF(
|
||||
dataToExport.map((item) => ({
|
||||
Name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
|
||||
Email: item.email || "",
|
||||
"Phone Number": item.phoneNumber || "",
|
||||
"Job Role": item.jobRole || "",
|
||||
"Joining Date": item.joiningDate
|
||||
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
||||
: "",
|
||||
Gender: item.gender || "",
|
||||
Status: item.isActive ? "Active" : "Inactive",
|
||||
})),
|
||||
"employees",
|
||||
[
|
||||
"Name",
|
||||
"Email",
|
||||
"Phone Number",
|
||||
"Job Role",
|
||||
"Joining Date",
|
||||
"Gender",
|
||||
"Status",
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case "print":
|
||||
printTable(tableRef.current);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
export default handleEmployeeExport;
|
@ -38,6 +38,7 @@ import usePagination from "../../hooks/usePagination";
|
||||
import { setProjectId } from "../../slices/localVariablesSlice";
|
||||
import { useHasUserPermission } from "../../hooks/useHasUserPermission";
|
||||
import Pagination from "../../components/common/Pagination";
|
||||
import handleEmployeeExport from "../../components/Employee/handleEmployeeExport";
|
||||
|
||||
const EmployeeList = () => {
|
||||
const selectedProjectId = useSelector(
|
||||
@ -134,78 +135,11 @@ const EmployeeList = () => {
|
||||
|
||||
const tableRef = useRef(null);
|
||||
const handleExport = (type) => {
|
||||
// Export full list (filtered if search applied)
|
||||
const dataToExport = searchText ? filteredData : employeeList;
|
||||
|
||||
if (!dataToExport || dataToExport.length === 0) return;
|
||||
|
||||
// Map and format employee data for export
|
||||
const exportData = dataToExport.map((item) => ({
|
||||
"First Name": item.firstName || "",
|
||||
"Middle Name": item.middleName || "",
|
||||
"Last Name": item.lastName || "",
|
||||
"Email": item.email || "",
|
||||
"Gender": item.gender || "",
|
||||
"Birth Date": item.birthdate
|
||||
? moment(item.birthdate).format("DD-MMM-YYYY")
|
||||
: "",
|
||||
"Joining Date": item.joiningDate
|
||||
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
||||
: "",
|
||||
"Permanent Address": item.permanentAddress || "",
|
||||
"Current Address": item.currentAddress || "",
|
||||
"Phone Number": item.phoneNumber || "",
|
||||
"Emergency Phone Number": item.emergencyPhoneNumber || "",
|
||||
"Emergency Contact Person": item.emergencyContactPerson || "",
|
||||
"Is Active": item.isActive ? "Active" : "Inactive",
|
||||
"Job Role": item.jobRole || "",
|
||||
}));
|
||||
|
||||
switch (type) {
|
||||
case "csv":
|
||||
exportToCSV(exportData, "employees");
|
||||
break;
|
||||
|
||||
case "excel":
|
||||
exportToExcel(exportData, "employees");
|
||||
break;
|
||||
|
||||
case "pdf":
|
||||
exportToPDF(
|
||||
dataToExport.map((item) => ({
|
||||
Name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
|
||||
Email: item.email || "",
|
||||
"Phone Number": item.phoneNumber || "",
|
||||
"Job Role": item.jobRole || "",
|
||||
"Joining Date": item.joiningDate
|
||||
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
||||
: "",
|
||||
Gender: item.gender || "",
|
||||
Status: item.isActive ? "Active" : "Inactive",
|
||||
})),
|
||||
"employees",
|
||||
[
|
||||
"Name",
|
||||
"Email",
|
||||
"Phone Number",
|
||||
"Job Role",
|
||||
"Joining Date",
|
||||
"Gender",
|
||||
"Status",
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case "print":
|
||||
printTable(tableRef.current);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
handleEmployeeExport(type, employeeList, filteredData, searchText, tableRef);
|
||||
};
|
||||
|
||||
|
||||
|
||||
const handleAllEmployeesToggle = (e) => {
|
||||
const isChecked = e.target.checked;
|
||||
setShowInactive(false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user