"use client"; import { useEffect, useState } from "react"; import { Button, Dialog, DialogTitle, DialogContent, DialogActions, FormControl, Select, MenuItem, FormControlLabel, Checkbox, Stack, Paper, styled, TextField, } from "@mui/material"; import FileUploadIcon from "@mui/icons-material/FileUpload"; import * as XLSX from "xlsx"; import { saveAs } from "file-saver"; import { DataGrid } from "@mui/x-data-grid"; import { columns } from "./constants"; // import { rows } from "./mockData"; import AdvancedSearch from "../../AdvancedSearch/AdvancedSearch"; const paginationModel = { page: 0, pageSize: 50 }; export default function TransactionTable() { const [form, setForm] = useState({ keyword: "", transactionID: "", transactionReferenceId: "", user: "", currency: "", state: "", statusDescription: "", transactionType: "", paymentMethod: "", psps: "", initialPsps: "", merchants: "", startDate: null, endDate: null, lastUpdatedFrom: null, lastUpdatedTo: null, minAmount: "", maxAmount: "", channel: "", }); const resetForm = () => { setForm({ keyword: "", transactionID: "", transactionReferenceId: "", user: "", currency: "", state: "", statusDescription: "", transactionType: "", paymentMethod: "", psps: "", initialPsps: "", merchants: "", startDate: null, endDate: null, lastUpdatedFrom: null, lastUpdatedTo: null, minAmount: "", maxAmount: "", channel: "", }); }; const [open, setOpen] = useState(false); const [fileType, setFileType] = useState<"csv" | "xls" | "xlsx">("csv"); const [onlyCurrentTable, setOnlyCurrentTable] = useState(false); const handleExport = () => { const exportRows = onlyCurrentTable ? transactions.slice(0, 5) : transactions; const exportData = [ columns.map((col) => col.headerName), ...exportRows.map((row) => columns.map((col) => row[col.field] ?? "")), ]; const worksheet = XLSX.utils.aoa_to_sheet(exportData); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, "Transactions"); if (fileType === "csv") { const csv = XLSX.utils.sheet_to_csv(worksheet); const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" }); saveAs(blob, "transactions.csv"); } else { XLSX.writeFile(workbook, `transactions.${fileType}`, { bookType: fileType, }); } setOpen(false); }; const [transactions, setTransactions] = useState([]); // const [filters, setFilters] = useState({ // state: '', // user: '', // }) useEffect(() => { const fetchTransactions = async () => { try { const query = new URLSearchParams(form as any).toString(); const res = await fetch(`/api/transactions?${query}`); const data = await res.json(); setTransactions(data); } catch (error) { console.error('Error fetching transactions:', error); } }; fetchTransactions(); }, [form]); return ( console.log(`setSearchQuery(${e.target.value})`)} sx={{ width: 300 }} /> {/* */} {/* */} {/* Export Dialog */} setOpen(false)}> Export Transactions setOnlyCurrentTable(e.target.checked)} /> } label="Only export the results in the current table" sx={{ mt: 2 }} /> ); } const StyledPaper = styled(Paper)(() => ({ height: "90vh", }));