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_MACHINARY_OFFICE} 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_MACHINARY_OFFICE}?${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