import { Button, CircularProgress } from "@mui/material"; import { useTranslations } from "next-intl"; import { useMemo, useState } from "react"; import useRequest from "@/lib/app/hooks/useRequest"; import { EXPORT_LOAN_HISTORY } from "@/core/data/apiRoutes"; import moment from "jalali-moment"; import FileSaver from "file-saver"; import DescriptionIcon from "@mui/icons-material/Description"; const PrintExcel = ({ table }) => { const t = useTranslations(); const [loading, setLoading] = useState(false); const requestServer = useRequest({ auth: true, pending: false, success: { notification: { show: false } } }); const { columnFilters, columnFilterFns, sorting } = table.getState(); const columns = table.getAllColumns(); const filterParams = useMemo(() => { const params = new URLSearchParams(); const filters = columnFilters.map((filter) => { let datatype; for (const i in columns) { if (columns[i].id == filter.id) { datatype = columns[i].columnDef.datatype; } } return { ...filter, fn: columnFilterFns[filter.id], datatype: datatype, }; }); params.set("start", "0"); params.set("filters", JSON.stringify(filters ?? [])); params.set("sorting", JSON.stringify(sorting ?? [])); return params; }, [columnFilters, columnFilterFns, sorting, columns]); const clickHandler = () => { setLoading(true); requestServer(`${EXPORT_LOAN_HISTORY}?${filterParams}`, "get", { auth: true, requestOptions: { responseType: "blob" }, }) .then((response) => { const filename = `خروجی کارتابل نظارت تاریخ_${moment().format("jYYYY_jMM_jDD")}.xlsx`; FileSaver.saveAs(response.data, filename); }) .catch(() => {}) .finally(() => { setLoading(false); }); }; return ( ); }; export default PrintExcel;