import { Button, Layout } from 'antd' import { FileWordOutlined } from '@ant-design/icons' import { memo, useCallback, useEffect, useState } from 'react' import { Flex } from '@components/Grid' import LoaderPortal from '@components/LoaderPortal' import { invokeWebApiWrapperAsync } from '@components/factory' import { arrayOrDefault, formatDate } from '@utils' import { DrillingProgramService } from '@api' import CategoryAdder from './CategoryAdder' import CategoryRender from './CategoryRender' import CategoryEditor from './CategoryEditor' import CategoryHistory from './CategoryHistory' import '@styles/drilling_program.less' export const DrillingProgram = memo(({ idWell }) => { const [selectedCategory, setSelectedCategory] = useState() const [historyVisible, setHistoryVisible] = useState(false) const [editorVisible, setEditorVisible] = useState(false) const [showLoader, setShowLoader] = useState(false) const [categories, setCategories] = useState([]) const [data, setData] = useState({}) const updateData = useCallback(async () => await invokeWebApiWrapperAsync( async () => { const data = await DrillingProgramService.getState(idWell) const categories = arrayOrDefault(await DrillingProgramService.getCategories(idWell)) setData(data) setCategories(categories.filter(cat => { if (cat?.id && (cat.name || cat.shortName)) if (data?.parts.findIndex((val) => val.idFileCategory === cat.id) < 0) return true return false })) }, setShowLoader, `Не удалось загрузить название скважины "${idWell}"` ), [idWell]) useEffect(() => updateData(), [updateData]) const onCategoryEdit = (catId) => { setSelectedCategory(catId) setEditorVisible(!!catId) } const onCategoryHistory = (catId) => { setSelectedCategory(catId) setHistoryVisible(!!catId) } const onEditorClosed = useCallback(() => { setEditorVisible(false) updateData() }, [updateData]) return ( {data && (
Программа бурения
Размер: {data.size}
Загружен: {formatDate(data.uploadDate)}
)} {data?.parts?.map?.((part, idx) => part && ( ))} part.idFileCategory === selectedCategory) ?? {}} /> setHistoryVisible(false)} visible={historyVisible} />
) }) export default DrillingProgram