diff --git a/src/pages/Well/WellOperations/DrillProcessFlow.jsx b/src/pages/Well/WellOperations/DrillProcessFlow.jsx index a89ec3e..420cef1 100644 --- a/src/pages/Well/WellOperations/DrillProcessFlow.jsx +++ b/src/pages/Well/WellOperations/DrillProcessFlow.jsx @@ -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,31 @@ 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 ImportExportBar = memo(({ well: givenWell, disabled }) => { + const style = { margin: 4 } + + const [wellContext] = useWell() + const well = useMemo(() => givenWell ?? wellContext, [givenWell, wellContext]) + + const downloadExport = useCallback( + async () => await download(`/api/ProcessMap/getReportFile/${well.id}`), + [well.id] + ) + + return ( +
+ +
+ ) +}) + const numericRender = makeNumericRender(2) export const getColumns = async (idWell) => { @@ -25,7 +48,7 @@ export const getColumns = async (idWell) => { })) return [ - makeSelectColumn('Конструкция секции','idWellSectionType', sectionTypes, null, { + makeSelectColumn('Конструкция секции', 'idWellSectionType', sectionTypes, null, { width: 160, sorter: makeNumericSorter('idWellSectionType'), }), @@ -48,16 +71,21 @@ export const DrillProcessFlow = memo(() => { const [columns, setColumns] = useState([]) const [well] = useWell() + const setTopRightBlock = useTopRightBlock() - const updateFlows = useCallback(() => invokeWebApiWrapperAsync( - async () => { - const flows = await ProcessMapService.getByIdWell(well.id) - setFlows(arrayOrDefault(flows)) - }, - setShowLoader, - `Не удалось загрузить режимно-технологическую карту`, - { actionName: 'Получение режимно-технологической карты', well }, - ), [well]) + const updateFlows = useCallback( + () => + invokeWebApiWrapperAsync( + async () => { + const flows = await ProcessMapService.getByIdWell(well.id) + setFlows(arrayOrDefault(flows)) + }, + setShowLoader, + `Не удалось загрузить режимно-технологическую карту`, + { actionName: 'Получение режимно-технологической карты', well } + ), + [well] + ) useEffect(() => { invokeWebApiWrapperAsync( @@ -67,7 +95,7 @@ export const DrillProcessFlow = memo(() => { }, setShowLoader, `Не удалось загрузить список конструкций секций`, - { actionName: 'Получение списка конструкций секций', well }, + { actionName: 'Получение списка конструкций секций', well } ) }, [well]) @@ -75,6 +103,8 @@ export const DrillProcessFlow = memo(() => { updateFlows() }, [well]) + useEffect(() => setTopRightBlock((well) => ), [setTopRightBlock]) + const tableHandlers = useMemo(() => { const handlerProps = { service: ProcessMapService, @@ -88,7 +118,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])