asb_cloud_front/src/pages/WellOperations/DrillProcessFlow.jsx

69 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useState, useEffect } from 'react'
import {
makeNumericMinMax,
makeNumericStartEnd
} from '../../components/Table'
import LoaderPortal from '../../components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '../../components/factory'
import { EditableTable } from '../../components/Table'
import { DrillFlowChartService } from '../../services/api'
const columns = [
makeNumericStartEnd('Глубина, м', 'depth'),
makeNumericMinMax('Нагрузка, т', 'axialLoad'),
makeNumericMinMax('Давление, атм', 'pressure'),
makeNumericMinMax('Момент на ВСП, кН·м', 'rotorTorque'),
makeNumericMinMax('Обороты на ВСП, об/мин', 'rotorSpeed'),
makeNumericMinMax('Расход, л/с', 'flow')
]
export const DrillProcessFlow = ({idWell}) => {
const [flows, setFlows] = useState([])
const [showLoader, setShowLoader] = useState(false)
const updateFlows = () => invokeWebApiWrapperAsync(
async () => {
const flows = await DrillFlowChartService.get(idWell)
setFlows(Array.isArray(flows) ? flows : [])
},
setShowLoader,
'Не удалось загрузить режимно-технологическую карту скважины'
)
useEffect(updateFlows, [idWell])
const onAdd = async (flow) => {
flow.idWell = idWell
await DrillFlowChartService.insert(idWell, flow)
updateFlows()
}
const onEdit = async (flow) => {
if (!flow.id) return
flow.idWell = idWell
await DrillFlowChartService.edit(idWell, flow)
updateFlows()
}
const onDelete = async (flow) => {
if (!flow.id) return
await DrillFlowChartService.delete(idWell, flow.id)
updateFlows()
}
return (
<LoaderPortal show={showLoader}>
<EditableTable
size={'small'}
bordered
columns={columns}
dataSource={flows}
onRowAdd={onAdd}
onRowEdit={onEdit}
onRowDelete={onDelete}
pagination={false}
/>
</LoaderPortal>
)
}