import { useEffect, useState } from "react"; import { AG_GRID_LOCALE_ES } from "@ag-grid-community/locale"; // Grid import type { ColDef, GridOptions, ValueFormatterParams } from "ag-grid-community"; import { AllCommunityModule, ModuleRegistry } from "ag-grid-community"; ModuleRegistry.registerModules([AllCommunityModule]); import { MoneyDTO } from "@erp/core"; import { formatDate, formatMoney } from "@erp/core/client"; // Core CSS import { AgGridReact } from "ag-grid-react"; import { useCustomerInvoicesQuery } from "../hooks"; /** * Fetch example Json data * Not recommended for production use! */ export const useFetchJson = (url: string, limit?: number) => { const [data, setData] = useState(); const [loading, setLoading] = useState(false); useEffect(() => { const fetchData = async () => { setLoading(true); // Note error handling is omitted here for brevity const response = await fetch(url); const json = await response.json(); const data = limit ? json.slice(0, limit) : json; setData(data); setLoading(false); }; fetchData(); }, [url, limit]); return { data, loading }; }; // Row Data Interface interface IRow { mission: string; company: string; location: string; date: string; time: string; rocket: string; price: number; successful: boolean; } // Create new GridExample component export const CustomerInvoicesGrid = () => { //const { useList } = useCustomerInvoices(); const { data, isLoading, isPending, isError, error } = useCustomerInvoicesQuery({}); // Column Definitions: Defines & controls grid columns. const [colDefs] = useState([ { field: "invoice_number", headerName: "Num. factura" }, { field: "invoice_series", headerName: "Serie" }, { field: "invoice_status", filter: true, headerName: "Estado", }, { field: "issue_date", headerName: "Fecha fact.", valueFormatter: (params: ValueFormatterParams) => { return formatDate(params.value); }, }, { field: "subtotal_price", valueFormatter: (params: ValueFormatterParams) => { const rawValue: MoneyDTO = params.value; return formatMoney(rawValue); }, }, { field: "total_price", valueFormatter: (params: ValueFormatterParams) => { const rawValue: MoneyDTO = params.value; return formatMoney(rawValue); }, }, ]); const gridOptions: GridOptions = { columnDefs: colDefs, defaultColDef: { editable: true, flex: 1, minWidth: 100, filter: false, sortable: false, resizable: true, }, sideBar: true, statusBar: { statusPanels: [ { statusPanel: "agTotalAndFilteredRowCountComponent", align: "left" }, { statusPanel: "agAggregationComponent" }, ], }, rowGroupPanelShow: "always", pagination: true, paginationPageSize: 10, paginationPageSizeSelector: [10, 20, 30, 50], enableCharts: true, localeText: AG_GRID_LOCALE_ES, rowSelection: { mode: "multiRow" }, }; // Container: Defines the grid's theme & dimensions. return (
); };