diff --git a/assets/icons/csvicon.svg b/assets/icons/csvicon.svg index 269627f..cf008ca 100644 --- a/assets/icons/csvicon.svg +++ b/assets/icons/csvicon.svg @@ -6,7 +6,7 @@ - + diff --git a/assets/icons/openappicon.svg b/assets/icons/openappicon.svg new file mode 100644 index 0000000..eb4ab94 --- /dev/null +++ b/assets/icons/openappicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/components/Dashboard/common/ExportListButton.jsx b/src/components/Dashboard/common/ExportListButton.jsx index f29d60c..e95c3dc 100644 --- a/src/components/Dashboard/common/ExportListButton.jsx +++ b/src/components/Dashboard/common/ExportListButton.jsx @@ -4,6 +4,8 @@ import { Button, Dropdown, Modal } from 'antd' import ExcelIcon from '../../Icons/ExcelIcon' import ODataIcon from '../../Icons/ODataIcon' import CsvIcon from '../../Icons/CsvIcon' +import DownloadIcon from '../../Icons/DownloadIcon' +import OpenAppIcon from '../../Icons/OpenAppIcon' import ExportIcon from '../../Icons/ExportIcon' import ODataURL from './ODataURL' import { ApiServerContext } from '../context/ApiServerContext' @@ -16,7 +18,8 @@ const ExportListButton = ({ }) => { const [odataModalOpen, setOdataModalOpen] = useState(false) const [excelLoading, setExcelLoading] = useState(false) - const { exportToExcel } = useContext(ApiServerContext) + const [csvLoading, setCsvLoading] = useState(false) + const { exportToExcel, exportToCsv } = useContext(ApiServerContext) const handleExcelExport = async (mode) => { setExcelLoading(true) @@ -27,40 +30,48 @@ const ExportListButton = ({ } } + const exportLoading = excelLoading || csvLoading const menuItems = [ { key: 'excel', - label: excelLoading ? 'Exporting...' : 'Excel', + label: excelLoading ? 'Exporting...' : 'Microsoft Excel', icon: , - disabled: excelLoading, + disabled: exportLoading, children: [ { key: 'excel-download', - label: 'Download', - disabled: excelLoading, + label: 'Download File', + icon: , + disabled: exportLoading, onClick: () => handleExcelExport('download') }, { key: 'excel-open', label: 'Open in Excel', - disabled: excelLoading, + icon: , + disabled: exportLoading, onClick: () => handleExcelExport('open') } ] }, { key: 'odata', - label: 'OData', + label: 'OData Connection', icon: , onClick: () => setOdataModalOpen(true) }, { key: 'csv', - label: 'CSV', + label: csvLoading ? 'Exporting...' : 'CSV File', icon: , - disabled: true, - onClick: () => { - // TODO: implement CSV export + disabled: exportLoading, + onClick: async () => { + setCsvLoading(true) + try { + await exportToCsv(objectType) + } finally { + setCsvLoading(false) + } } } ] @@ -70,12 +81,13 @@ const ExportListButton = ({