import { useState, useEffect } from 'react' import { Input } from 'antd' import moment from 'moment' import { EditableTable, DatePickerWrapper, SelectFromDictionary, makeColumn, numericColumnOptions, makeNumericSorter, makeDateSorter } from "../../components/Table" import LoaderPortal from '../../components/LoaderPortal' import { invokeWebApiWrapperAsync } from '../../components/factory' import { WellOperationService} from '../../services/api' import { dictionarySectionType, getByKeyOrReturnKey } from './dictionary' const { TextArea } = Input; const basePageSize = 160; const format='YYYY.MM.DD HH:mm' const numericSortColumnOptions = Object.assign({ sorter: makeNumericSorter('wellDepth'), render:(value) =>
{value}
}, numericColumnOptions) const durationFormattedColumnOptions = Object.assign({ render:(value) =>
{Number.isNaN(value.toFixed(2)) ? "-" : value.toFixed(2)}
}, numericColumnOptions) export const WellOperationsEditor = ({idWell, idType}) => { const [pageNumAndPageSize, setPageNumAndPageSize] = useState({current:1, pageSize:basePageSize}) const [paginationTotal, setPaginationTotal] = useState(0) const [dictionaryOperationCategory, setDictionaryOperationCategory] = useState(new Map()) const [operations, setOperations] = useState([]) const [showLoader, setShowLoader] = useState(false) useEffect(() => invokeWebApiWrapperAsync( async () => { const categories = await WellOperationService.getCategories(idWell) const dictCategories = new Map() categories?.forEach((item) => dictCategories.set(item.id, item.name)) setDictionaryOperationCategory(dictCategories) }),[idWell]) const updateOperations = () => invokeWebApiWrapperAsync( async () => { const skip = ((pageNumAndPageSize.current - 1) * pageNumAndPageSize.pageSize) || 0 const take = pageNumAndPageSize.pageSize const paginatedOperations = await WellOperationService.getOperations(idWell, idType, undefined, undefined, undefined, undefined, undefined, undefined, skip, take ) const operations = paginatedOperations?.items ?? [] setOperations(operations) const total = paginatedOperations.count?? paginatedOperations.items?.length ?? 0 setPaginationTotal(total) }, setShowLoader, 'Не удалось загрузить список операций по скважине' ) useEffect(updateOperations, [idWell, idType, pageNumAndPageSize]) const columns = [ makeColumn('Конструкция секции','idWellSectionType', { editable:true, input:, width:110, render:(_, record)=>getByKeyOrReturnKey(dictionarySectionType, record.idWellSectionType) }), makeColumn('Операция','idCategory', { editable:true, input:, width:200, render:(_, record)=>getByKeyOrReturnKey(dictionaryOperationCategory, record.idCategory) }), makeColumn('Доп. инфо','categoryInfo', {editable:true, width:300, input: