import LoaderPortal from '../src/components/LoaderPortal' import { useState, useEffect } from "react"; import {makeColumn, makeColumnsPlanFact, RegExpIsFloat} from '../src/components/factory' import {WellSectionService} from '../src/services/api' import {invokeWebApiWrapperAsync} from '../src/components/factory' import { EditableTable } from '../src/components/EditableTable'; import { Input } from 'antd' const TypeSelector = const DataListSectionTypes = const numericColumnOptions = { editable: true, initialValue: 0, formItemRules: [ { required: true, message: `Введите число`, pattern: RegExpIsFloat, }, ], }; const columns = [ makeColumn('Конструкция секции', 'sectionType', {editable:true, input:TypeSelector}), makeColumnsPlanFact('Глубина, м', 'wellDepth', numericColumnOptions), makeColumnsPlanFact('Период, д', 'buildDays', numericColumnOptions), makeColumnsPlanFact('Механическая скорость проходки, м/час', 'rateOfPenetration', numericColumnOptions), makeColumnsPlanFact('Рейсовая скорость, м/час', 'routeSpeed', numericColumnOptions), makeColumnsPlanFact('Скорость подъема КНБК', 'bhaUpSpeed', numericColumnOptions), makeColumnsPlanFact('Скорость спуска КНБК', 'bhaDownSpeed', numericColumnOptions), makeColumnsPlanFact('Скорость спуска обсадной колонны', 'casingDownSpeed', numericColumnOptions), ] export default function WellStat({idWell}){ const [showLoader, setShowLoader] = useState(false) const [items, setItems] = useState([]) const addKeysAndUpdateStateData = (items) =>{ const keyedItems = items?.map(item => ({...item, key:item.id}))??[] setItems(keyedItems) } useEffect(() => { invokeWebApiWrapperAsync( async () => { const paginationContainer = await WellSectionService.getAll(idWell, 0, 1024) addKeysAndUpdateStateData(paginationContainer.items) }, setShowLoader, `Не удалось загрузить секции по скважине "${idWell}"`) } ,[idWell]) const onAdd = (item) => { invokeWebApiWrapperAsync( async () => { const updatedItems = await WellSectionService.insert(idWell, [item]) const newItems = [...items, ...updatedItems] addKeysAndUpdateStateData(newItems) }, setShowLoader, `Не удалось добавить секцию в скважину "${idWell}"`) } const onEdit = (item) => { invokeWebApiWrapperAsync( async () => { const updatedItem = await WellSectionService.update(idWell, item.id, item) const newItems = [...items] const index = newItems.findIndex((i) => item.key === i.key) newItems.splice(index, 1, updatedItem) addKeysAndUpdateStateData(newItems) }, setShowLoader, `Не удалось изменить секцию в скважине "${idWell}"`) } const onDelete = (item) =>{ invokeWebApiWrapperAsync( async () => { await WellSectionService.delete(idWell, [item.id]) const newItems = [...items] const index = newItems.findIndex((i) => item.key === i.key) newItems.splice(index, 1) addKeysAndUpdateStateData(newItems) }, setShowLoader, `Не удалось удалить секцию из скважины "${idWell}"`) } return( {DataListSectionTypes} ) }