Merge pull request 'Добавлена кнопка скачивания "Выгрузка расширенной автоформируемой РТК"' (#1) from feature/add-download-button into dev

Reviewed-on: http://46.146.209.148:8080/DDrilling/asb_cloud_front/pulls/1
This commit is contained in:
Александр Сироткин 2022-12-19 18:24:56 +05:00
commit 878ab921c1

View File

@ -1,6 +1,8 @@
import { useState, useEffect, memo, useMemo, useCallback } from 'react'
import { useState, useEffect, memo, useMemo, useCallback, FC } from 'react'
import { Button, Tooltip } from 'antd'
import { FileOutlined } from '@ant-design/icons'
import { useWell } from '@asb/context'
import { useWell, useTopRightBlock } from '@asb/context'
import {
EditableTable,
makeGroupColumn,
@ -11,10 +13,30 @@ import {
makeSelectColumn,
} from '@components/Table'
import LoaderPortal from '@components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '@components/factory'
import { invokeWebApiWrapperAsync, download } from '@components/factory'
import { ProcessMapService, WellOperationService } from '@api'
import { arrayOrDefault } from '@utils'
const style = { margin: 4 }
const ImportExportBar = memo(({ well: givenWell, disabled }) => {
const [wellContext] = useWell()
const well = useMemo(() => givenWell ?? wellContext, [givenWell, wellContext])
const downloadExport = useCallback(
async () => await download(`/api/ProcessMap/getReportFile/${well.id}`),
[well.id]
)
return (
<div>
<Tooltip title={'Выгрузка расширенной автоформируемой РТК'}>
<Button disabled={disabled} icon={<FileOutlined />} style={style} onClick={downloadExport} />
</Tooltip>
</div>
)
})
const numericRender = makeNumericRender(2)
export const getColumns = async (idWell) => {
@ -25,7 +47,7 @@ export const getColumns = async (idWell) => {
}))
return [
makeSelectColumn('Конструкция секции','idWellSectionType', sectionTypes, null, {
makeSelectColumn('Конструкция секции', 'idWellSectionType', sectionTypes, null, {
width: 160,
sorter: makeNumericSorter('idWellSectionType'),
}),
@ -48,6 +70,7 @@ export const DrillProcessFlow = memo(() => {
const [columns, setColumns] = useState([])
const [well] = useWell()
const setTopRightBlock = useTopRightBlock()
const updateFlows = useCallback(() => invokeWebApiWrapperAsync(
async () => {
@ -75,6 +98,10 @@ export const DrillProcessFlow = memo(() => {
updateFlows()
}, [well])
useEffect(() => setTopRightBlock((well) => (
<ImportExportBar well={well} />
)), [setTopRightBlock])
const tableHandlers = useMemo(() => {
const handlerProps = {
service: ProcessMapService,
@ -88,7 +115,12 @@ export const DrillProcessFlow = memo(() => {
return {
add: { ...handlerProps, action: 'insert', actionName: 'Добавление месторождения', recordParser },
edit: { ...handlerProps, action: 'update', actionName: 'Редактирование месторождения', recordParser },
delete: { ...handlerProps, action: 'delete', actionName: 'Удаление месторождения', permission: 'DrillFlowChart.delete' },
delete: {
...handlerProps,
action: 'delete',
actionName: 'Удаление месторождения',
permission: 'DrillFlowChart.delete',
},
}
}, [updateFlows, well.id])