Commit 2b5d48c0 authored by Merekeyev Dias's avatar Merekeyev Dias

added download-button to XML data in RequestPage

parent 1ca4d846
...@@ -6,6 +6,7 @@ import Header from './components/Header/Header'; ...@@ -6,6 +6,7 @@ import Header from './components/Header/Header';
import AuthPage from './pages/AuthPage/AuthPage'; import AuthPage from './pages/AuthPage/AuthPage';
import HomePage from './pages/HomePage/HomePage'; import HomePage from './pages/HomePage/HomePage';
import RequestPage from './pages/RequestPage/RequestPage'; import RequestPage from './pages/RequestPage/RequestPage';
import ManualPage from './pages/ManualPage/ManualPage';
import AddEditPage from './pages/(crudPages)/AddEditPage'; import AddEditPage from './pages/(crudPages)/AddEditPage';
import './App.css'; import './App.css';
...@@ -34,6 +35,7 @@ const App: React.FC = () => { ...@@ -34,6 +35,7 @@ const App: React.FC = () => {
<Route path="/" element={<HomePage />} /> <Route path="/" element={<HomePage />} />
<Route path="/add" element={<AddEditPage />} /> <Route path="/add" element={<AddEditPage />} />
<Route path="/edit/:id" element={<AddEditPage />} /> <Route path="/edit/:id" element={<AddEditPage />} />
<Route path='/manuals' element={<ManualPage />} />
<Route path="/requests" element={<RequestPage />} /> <Route path="/requests" element={<RequestPage />} />
<Route path="/*" element={<Navigate to="/" />} /> <Route path="/*" element={<Navigate to="/" />} />
</Route> </Route>
......
import React from "react";
const ManualPage:React.FC = () => {
return (
<>
</>
)
}
export default ManualPage;
\ No newline at end of file
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Button, Space, Tag, Modal, message } from 'antd'; import { Button, Space, Tag, Modal, message } from 'antd';
import type { TableProps } from 'antd'; import type { TableProps } from 'antd';
import { getStatusText, getStatusColor, openXMLInNewPage } from './utils'; import { getStatusText, getStatusColor, openXMLInNewPage, downloadXML } from './utils';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
export interface DataType { export interface DataType {
...@@ -28,7 +28,12 @@ export const columns: TableProps<DataType>['columns'] = [ ...@@ -28,7 +28,12 @@ export const columns: TableProps<DataType>['columns'] = [
dataIndex: "xml", dataIndex: "xml",
key: "xml", key: "xml",
render: (_, record) => ( render: (_, record) => (
<div style={{display: 'flex', alignItems: 'center', gap: 5}}>
<Button type='link' onClick={() => downloadXML(record.xml, record.id)} style={{padding: 0}}>
<img src="img/download_icon.png" alt="" width={18}/>
</Button>
<Button type='link' onClick={() => openXMLInNewPage(record.xml)} style={{padding: 0}}>Открыть XML</Button> <Button type='link' onClick={() => openXMLInNewPage(record.xml)} style={{padding: 0}}>Открыть XML</Button>
</div>
), ),
}, },
{ {
......
...@@ -18,12 +18,26 @@ export const getStatusColor = (status: number) => { ...@@ -18,12 +18,26 @@ export const getStatusColor = (status: number) => {
} }
} }
export const openXMLInNewPage = (xmlContent: string) => { const createAndClickLink = (xmlContent: string, fileName?: string) => {
const blob = new Blob([xmlContent], { type: 'application/xml' }); const blob = new Blob([xmlContent], { type: 'application/xml' });
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
const a = document.createElement('a'); const a = document.createElement('a');
a.href = url; a.href = url;
a.target = '_blank'; a.target = '_blank';
if (fileName) {
a.download = fileName;
}
a.click(); a.click();
URL.revokeObjectURL(url); URL.revokeObjectURL(url);
} }
export const downloadXML = (xmlContent: string, requestId: number) => {
const fileName = `request_xml_${requestId}.xml`;
createAndClickLink(xmlContent, fileName);
}
export const openXMLInNewPage = (xmlContent: string) => {
createAndClickLink(xmlContent);
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment