forked from ddrilling/asb_cloud_front
CF2-49: Main changes for new Measures table display
This commit is contained in:
parent
c2243f1eb6
commit
5755b41abc
@ -7,16 +7,17 @@ import { invokeWebApiWrapperAsync } from '../../components/factory'
|
|||||||
import { MeasureService } from '../../services/api'
|
import { MeasureService } from '../../services/api'
|
||||||
import { Editor } from './Editor'
|
import { Editor } from './Editor'
|
||||||
import TimelineItem from 'antd/lib/timeline/TimelineItem'
|
import TimelineItem from 'antd/lib/timeline/TimelineItem'
|
||||||
//import { View } from './View'
|
import { View } from './View'
|
||||||
|
import '../../styles/measure.css'
|
||||||
|
|
||||||
const format='YYYY.MM.DD HH:mm'
|
const format='YYYY.MM.DD HH:mm'
|
||||||
|
|
||||||
export const MeasureTable2 = ({idWell, idCategory, title, columns}) => {
|
export const MeasureTable2 = ({idWell, idCategory, title, columns, currentValues}) => {
|
||||||
const [showLoader, setShowLoader] = useState(false)
|
const [showLoader, setShowLoader] = useState(false)
|
||||||
const [showEditor, setShowEditor] = useState(false)
|
const [showEditor, setShowEditor] = useState(false)
|
||||||
const [history, setHistory] = useState([])
|
const [history, setHistory] = useState([])
|
||||||
|
|
||||||
const update = () => invokeWebApiWrapperAsync(async()=>{
|
const updateHistory = () => invokeWebApiWrapperAsync(async()=>{
|
||||||
const data = await MeasureService.getHisory(idWell, idCategory)
|
const data = await MeasureService.getHisory(idWell, idCategory)
|
||||||
const story = data?.map( i=> ({
|
const story = data?.map( i=> ({
|
||||||
id: i.id,
|
id: i.id,
|
||||||
@ -27,23 +28,41 @@ export const MeasureTable2 = ({idWell, idCategory, title, columns}) => {
|
|||||||
setHistory(story??[])
|
setHistory(story??[])
|
||||||
}
|
}
|
||||||
, setShowLoader
|
, setShowLoader
|
||||||
, "не удалось загрузить")
|
, `Не удалось загрузить последние данные по скважине ${idWell}`)
|
||||||
|
|
||||||
useEffect(update, [idWell, idCategory])
|
useEffect(updateHistory, [idWell, idCategory])
|
||||||
|
|
||||||
return <LoaderPortal show={showLoader}>
|
const lastHistoryIndex = history.length
|
||||||
<h3>{title}</h3>
|
|
||||||
|
return <>
|
||||||
<Button
|
<LoaderPortal show={showLoader}>
|
||||||
onClick={() => setShowEditor(true)}
|
|
||||||
icon={<HourglassOutlined/>}>История</Button>
|
<h3>{title}</h3>
|
||||||
<Timeline>
|
|
||||||
{history.map(item=><TimelineItem value={item}>{item.timestamp}</TimelineItem>)}
|
<div className='d-flex'>
|
||||||
</Timeline>
|
<div className='measure-dates'>
|
||||||
{/* <View
|
<Timeline>
|
||||||
item = {lastData?.data}
|
{history.map((item, index)=>
|
||||||
columns = {columns}/> */}
|
<Timeline.Item
|
||||||
<Modal
|
key={item.id}
|
||||||
|
className={index === lastHistoryIndex - 1
|
||||||
|
? 'last-measure-button'
|
||||||
|
: 'measure-button'}
|
||||||
|
onClick={() => setShowEditor(true)}
|
||||||
|
value={item}
|
||||||
|
>
|
||||||
|
<p>{item.timestamp}</p>
|
||||||
|
</Timeline.Item>)}
|
||||||
|
</Timeline>
|
||||||
|
</div>
|
||||||
|
<div className='w-100'>
|
||||||
|
<View
|
||||||
|
item = {currentValues.data}
|
||||||
|
columns = {columns}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Modal
|
||||||
title={title}
|
title={title}
|
||||||
centered
|
centered
|
||||||
visible={showEditor}
|
visible={showEditor}
|
||||||
@ -51,12 +70,14 @@ export const MeasureTable2 = ({idWell, idCategory, title, columns}) => {
|
|||||||
onCancel={() => setShowEditor(false)}
|
onCancel={() => setShowEditor(false)}
|
||||||
width="95%"
|
width="95%"
|
||||||
footer={null}
|
footer={null}
|
||||||
>
|
>
|
||||||
<Editor
|
<Editor
|
||||||
idWell={idWell}
|
idWell={idWell}
|
||||||
idCategory={idCategory}
|
idCategory={idCategory}
|
||||||
columns = {columns}
|
columns = {columns}
|
||||||
onUpdate={update}/>
|
onUpdate={updateHistory}
|
||||||
</Modal>
|
/>
|
||||||
</LoaderPortal>
|
</Modal>
|
||||||
|
</LoaderPortal>
|
||||||
|
</>
|
||||||
}
|
}
|
@ -9,30 +9,35 @@ export const View = ({columns, item}) => {
|
|||||||
const viewItems = columns.map( (column, i) => {
|
const viewItems = columns.map( (column, i) => {
|
||||||
const row = Math.floor(i / colsCount) + 1
|
const row = Math.floor(i / colsCount) + 1
|
||||||
const colb = i % colsCount
|
const colb = i % colsCount
|
||||||
return <>
|
|
||||||
<GridItem
|
|
||||||
row={row}
|
|
||||||
col={colb*2 + 1}
|
|
||||||
background='#00000005'
|
|
||||||
border='1px solid #FFFE'
|
|
||||||
>
|
|
||||||
{column.title}
|
|
||||||
|
|
||||||
</GridItem>
|
return <>
|
||||||
<GridItem
|
<GridItem
|
||||||
row={row}
|
//style={{width:'100%', border:'1px solid red'}}
|
||||||
col={colb*2 + 2}
|
row={row}
|
||||||
border='1px solid rgba(0, 0, 0, 0.05)'
|
col={colb*2 + 1}
|
||||||
justifyContect='right'
|
background='#00000005'
|
||||||
marginRight='16px'
|
border='1px solid #FFFE'
|
||||||
fontWeight='bold'
|
>
|
||||||
textAlign='right'>
|
{column.title}
|
||||||
{column.render ? column.render(item[column.dataIndex]) : item[column.dataIndex]}
|
</GridItem>
|
||||||
</GridItem>
|
<GridItem
|
||||||
|
//style={{width:'50%', border:'1px solid blue'}}
|
||||||
|
row={row}
|
||||||
|
col={colb*2 + 2}
|
||||||
|
border='1px solid rgba(0, 0, 0, 0.05)'
|
||||||
|
justifycontent='right'
|
||||||
|
marginright='16px'
|
||||||
|
fontWeight='bold'
|
||||||
|
textalign='right'
|
||||||
|
>
|
||||||
|
{column.render ? column.render(item[column.dataIndex]) : item[column.dataIndex]}
|
||||||
|
</GridItem>
|
||||||
</>
|
</>
|
||||||
})
|
})
|
||||||
|
|
||||||
return <Grid>
|
return <>
|
||||||
{viewItems}
|
<Grid>
|
||||||
</Grid>
|
{viewItems}
|
||||||
|
</Grid>
|
||||||
|
</>
|
||||||
}
|
}
|
@ -4,36 +4,24 @@ import {v, numericColumnOptions, textColumnOptions} from './columnsCommon'
|
|||||||
export const columnsMudDiagram = [
|
export const columnsMudDiagram = [
|
||||||
makeColumn(v('N пробы'), 'probeNumber', numericColumnOptions),
|
makeColumn(v('N пробы'), 'probeNumber', numericColumnOptions),
|
||||||
makeColumn(v('Глубина отбора пробы'), 'probeExtractionDepth', numericColumnOptions),
|
makeColumn(v('Глубина отбора пробы'), 'probeExtractionDepth', numericColumnOptions),
|
||||||
{
|
makeColumn(v('Песчаник (%)'), 'sandstone', numericColumnOptions),
|
||||||
title: 'Литология',
|
makeColumn(v('Алевролит (%)'), 'siltstone', numericColumnOptions),
|
||||||
key: 'lithology',
|
makeColumn(v('Аргиллит (%)'), 'argillit', numericColumnOptions),
|
||||||
children: [
|
makeColumn(v('Аргиллит бит. (%)'), 'brokenArgillit', numericColumnOptions),
|
||||||
makeColumn(v('Песчаник (%)'), 'sandstone', numericColumnOptions),
|
makeColumn(v('Уголь (%)'), 'coal', numericColumnOptions),
|
||||||
makeColumn(v('Алевролит (%)'), 'siltstone', numericColumnOptions),
|
makeColumn(v('Песок (%)'), 'sand', numericColumnOptions),
|
||||||
makeColumn(v('Аргиллит (%)'), 'argillit', numericColumnOptions),
|
makeColumn(v('Глина (%)'), 'clay', numericColumnOptions),
|
||||||
makeColumn(v('Аргиллит бит. (%)'), 'brokenArgillit', numericColumnOptions),
|
makeColumn(v('Известняк (%)'), 'camstone', numericColumnOptions),
|
||||||
makeColumn(v('Уголь (%)'), 'coal', numericColumnOptions),
|
makeColumn(v('Цемент (%)'), 'cement', numericColumnOptions),
|
||||||
makeColumn(v('Песок (%)'), 'sand', numericColumnOptions),
|
|
||||||
makeColumn(v('Глина (%)'), 'clay', numericColumnOptions),
|
|
||||||
makeColumn(v('Известняк (%)'), 'camstone', numericColumnOptions),
|
|
||||||
makeColumn(v('Цемент (%)'), 'cement', numericColumnOptions),
|
|
||||||
]
|
|
||||||
},
|
|
||||||
makeColumn('Краткое описание', 'summary', textColumnOptions),
|
makeColumn('Краткое описание', 'summary', textColumnOptions),
|
||||||
makeColumn(v('ЛБА бурового раствора'), 'drillingMud', numericColumnOptions),
|
makeColumn(v('ЛБА бурового раствора'), 'drillingMud', numericColumnOptions),
|
||||||
makeColumn(v('ЛБА (шлама)'), 'sludge', numericColumnOptions),
|
makeColumn(v('ЛБА (шлама)'), 'sludge', numericColumnOptions),
|
||||||
{
|
makeColumn(v('Сумма УВ мах. (абс%)'), 'maxSum', numericColumnOptions),
|
||||||
title: 'Газопоказания',
|
makeColumn(v('С1 метан (отн%)'), 'methane', numericColumnOptions),
|
||||||
key: 'gasIndications',
|
makeColumn(v('С2 этан (отн%)'), 'ethane', numericColumnOptions),
|
||||||
children: [
|
makeColumn(v('С3 пропан (отн%)'), 'propane', numericColumnOptions),
|
||||||
makeColumn(v('Сумма УВ мах. (абс%)'), 'maxSum', numericColumnOptions),
|
makeColumn(v('С4 бутан (отн%)'), 'butane', numericColumnOptions),
|
||||||
makeColumn(v('С1 метан (отн%)'), 'methane', numericColumnOptions),
|
makeColumn(v('С5 пентан (отн%)'), 'pentane', numericColumnOptions),
|
||||||
makeColumn(v('С2 этан (отн%)'), 'ethane', numericColumnOptions),
|
|
||||||
makeColumn(v('С3 пропан (отн%)'), 'propane', numericColumnOptions),
|
|
||||||
makeColumn(v('С4 бутан (отн%)'), 'butane', numericColumnOptions),
|
|
||||||
makeColumn(v('С5 пентан (отн%)'), 'pentane', numericColumnOptions),
|
|
||||||
]
|
|
||||||
},
|
|
||||||
makeColumn(v('Мех. скорость'), 'mechanicalSpeed', numericColumnOptions),
|
makeColumn(v('Мех. скорость'), 'mechanicalSpeed', numericColumnOptions),
|
||||||
makeColumn('Предварительное заключение о насыщении по ГК', 'preliminaryConclusion', textColumnOptions),
|
makeColumn('Предварительное заключение о насыщении по ГК', 'preliminaryConclusion', textColumnOptions),
|
||||||
]
|
]
|
@ -1,25 +1,60 @@
|
|||||||
|
import { useState, useEffect } from 'react'
|
||||||
import { columnsMudDiagram} from './columnsMudDiagram'
|
import { columnsMudDiagram} from './columnsMudDiagram'
|
||||||
import { columnsDrillingFluid} from './columnsDrillingFluid'
|
import { columnsDrillingFluid} from './columnsDrillingFluid'
|
||||||
|
import { invokeWebApiWrapperAsync } from '../../components/factory'
|
||||||
|
import { MeasureService } from '../../services/api'
|
||||||
import { columnsNnb } from './columnsNnb'
|
import { columnsNnb } from './columnsNnb'
|
||||||
import { MeasureTable } from './MeasureTable'
|
import LoaderPortal from '../../components/LoaderPortal'
|
||||||
//import { MeasureTable2 } from './MeasureTable2'
|
//import moment from 'moment'
|
||||||
|
//import { MeasureTable } from './MeasureTable'
|
||||||
|
import { MeasureTable2 } from './MeasureTable2'
|
||||||
|
|
||||||
|
const format='YYYY.MM.DD HH:mm'
|
||||||
|
|
||||||
export default function Measure({idWell}){
|
export default function Measure({idWell}){
|
||||||
|
const [showLoader, setShowLoader] = useState(false)
|
||||||
|
const [currentFluidValues, setCurrentFluidValues] = useState([])
|
||||||
|
const [currentMudValues, setCurrentMudValues] = useState([])
|
||||||
|
const [currentNnbValues, setCurrentNnbValues] = useState([])
|
||||||
|
|
||||||
|
const updateCurrentValues = () => invokeWebApiWrapperAsync(async()=>{
|
||||||
|
const data = await MeasureService.getAllLast(idWell)
|
||||||
|
|
||||||
|
const fluidValues = data?.find(value => value.idCategory === 1)
|
||||||
|
setCurrentFluidValues(fluidValues ?? [])
|
||||||
|
const mudValues = data?.find(value => value.idCategory === 2)
|
||||||
|
setCurrentMudValues(mudValues ?? [])
|
||||||
|
const nnbValues = data?.find(value => value.idCategory === 3)
|
||||||
|
setCurrentNnbValues(nnbValues ?? [])
|
||||||
|
}
|
||||||
|
,setShowLoader
|
||||||
|
,`Не удалось загрузить последние данные по скважине ${idWell}`)
|
||||||
|
|
||||||
|
useEffect(updateCurrentValues, [idWell])
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<MeasureTable
|
<LoaderPortal show={showLoader}>
|
||||||
idWell={idWell}
|
<MeasureTable2
|
||||||
idCategory={1}
|
idWell={idWell}
|
||||||
title='Замер бурового раствора'
|
idCategory={1}
|
||||||
columns={columnsDrillingFluid}/>
|
title='Замер бурового раствора'
|
||||||
<MeasureTable
|
columns={columnsDrillingFluid}
|
||||||
idWell={idWell}
|
currentValues={currentFluidValues}
|
||||||
idCategory={2}
|
/>
|
||||||
title='Шламограмма'
|
<MeasureTable2
|
||||||
columns={columnsMudDiagram}/>
|
idWell={idWell}
|
||||||
<MeasureTable
|
idCategory={2}
|
||||||
idWell={idWell}
|
title='Шламограмма'
|
||||||
idCategory={3}
|
columns={columnsMudDiagram}
|
||||||
title='ННБ'
|
currentValues={currentMudValues}
|
||||||
columns={columnsNnb}/>
|
/>
|
||||||
|
<MeasureTable2
|
||||||
|
idWell={idWell}
|
||||||
|
idCategory={3}
|
||||||
|
title='ННБ'
|
||||||
|
columns={columnsNnb}
|
||||||
|
currentValues={currentNnbValues}
|
||||||
|
/>
|
||||||
|
</LoaderPortal>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
@ -19,6 +19,10 @@ body {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.w-15 {
|
||||||
|
width: 15%
|
||||||
|
}
|
||||||
|
|
||||||
.w-100 {
|
.w-100 {
|
||||||
width: 100%
|
width: 100%
|
||||||
}
|
}
|
||||||
|
32
src/styles/measure.css
Normal file
32
src/styles/measure.css
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
.measure-dates {
|
||||||
|
width: 15%;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.measure-button {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 8px;
|
||||||
|
width: 95%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.measure-button:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.last-measure-button {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 8px;
|
||||||
|
background-color: #DCDCDC;
|
||||||
|
width: 95%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.last-measure-button:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #D3D3D3;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user