From 06f8c441663f7b52d53f1f9947097e29a245c52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Wed, 28 Jul 2021 17:45:41 +0500 Subject: [PATCH] Add WellStat --- src/pages/ClusterStat.jsx | 143 ++++++++++++++++++++++++++++++++++++++ src/pages/WellStat.jsx | 72 +++++++++++++++++++ 2 files changed, 215 insertions(+) create mode 100644 src/pages/ClusterStat.jsx create mode 100644 src/pages/WellStat.jsx diff --git a/src/pages/ClusterStat.jsx b/src/pages/ClusterStat.jsx new file mode 100644 index 0000000..5c3b055 --- /dev/null +++ b/src/pages/ClusterStat.jsx @@ -0,0 +1,143 @@ +import {useParams} from "react-router-dom"; +import {Link} from "react-router-dom"; +import LoaderPortal from '../components/LoaderPortal' +import { useState, useEffect } from "react"; +import {ClusterService} from '../services/api' +import notify from '../components/notify' +import {Table, Tag, Button} from 'antd'; + +const columns = [ + { + title: 'скв №', + key: 'caption', + dataIndex: 'caption', + render: (_, item) => {item.caption} + }, + { + title: 'Тип скв.', + key: 'wellType', + dataIndex: 'wellType', + }, + { + title: 'Фактические сроки бурения', + children: [ + { + title: 'начало', + key: 'factStart', + dataIndex: 'factStart', + }, + { + title: 'окончание', + key: 'factEnd', + dataIndex: 'factEnd', + }, + ] + }, + { + title: 'Продолжительность бурения', + children: [ + { + title: 'план', + key: 'periodPlan', + dataIndex: 'periodPlan', + }, + { + title: 'факт', + key: 'periodFact', + dataIndex: 'periodFact', + }, + ] + }, + { + title: 'МСП за скв', + children: [ + { + title: 'план', + key: 'rateOfPenetrationPlan', + dataIndex: 'rateOfPenetrationPlan', + }, + { + title: 'факт', + key: 'rateOfPenetrationFact', + dataIndex: 'rateOfPenetrationFact', + }, + ], + }, + { + title: 'Рейсовая скорость за скв', + children: [ + { + title: 'план', + key: 'routeSpeedPlan', + dataIndex: 'routeSpeedPlan', + }, + { + title: 'факт', + key: 'routeSpeedFact', + dataIndex: 'routeSpeedFact', + }, + ], + }, + { + title: 'Секции', + key: 'sections', + dataIndex: 'sections', + render: (item) => (таблица по секциям) + }, + { + title: 'График глубина-день', + render: _ => () + }, + { + title: 'Таблица по операциям', + render: _ => () + }, + { + title: 'Подрядчики', + key: 'companies', + dataIndex: 'companies', + render: (item) => item.map(company => {company.caption}) + }, +]; + +export default function ClusterStat() { + let { id } = useParams() + const [clusterTitle, setClusterTitle] = useState("") + const [wellsStat, setWellsStat] = useState(null) + const [showLoader, setShowLoader] = useState(false) + + useEffect(()=>{ + const updateWellsStat = async() => { + setShowLoader(true) + try{ + const msInDay = 1000*60*60*24 + const data = await ClusterService.getStat(id) + const wellsStat = data.wellsStat.map(w=>({...w, + periodPlan: (new Date(w.planEnd) - new Date(w.planStart))/msInDay, + periodFact: (new Date(w.factEnd) - new Date(w.factStart))/msInDay, + })) + setWellsStat(wellsStat) + setClusterTitle(data.caption) + } + catch(ex) { + notify(`Не удалось загрузить статистику по скважинам куста "${id}"`, 'error') + console.log(ex) + } + setShowLoader(false) + } + updateWellsStat() + },[id]) + + return( + +

{clusterTitle}

+ record.id} + /> + ) +} \ No newline at end of file diff --git a/src/pages/WellStat.jsx b/src/pages/WellStat.jsx new file mode 100644 index 0000000..5372b1a --- /dev/null +++ b/src/pages/WellStat.jsx @@ -0,0 +1,72 @@ +//import {useParams} from "react-router-dom"; +//import {Link} from "react-router-dom"; +import LoaderPortal from '../components/LoaderPortal' +import { useState, useEffect } from "react"; +// import {ClusterService} from '../services/api' +// import notify from '../components/notify' +import {Table, Tag, Button} from 'antd'; + +const makeColumn = (title, key) => ({title: title, key: key, dataIndex: key,}) + +const makePlanFactColumns = (title, keyPlan, keyFact) => +{ + let keyPlanLocal = keyPlan + let keyFactLocal = keyFact + + if(!keyFact){ + keyPlanLocal = keyPlan + 'Plan' + keyFactLocal = keyPlan + 'Fact' + } + + return { + title: title, + children: [ + makeColumn('план', keyPlanLocal), + makeColumn('факт', keyFactLocal), + ] + } +} + +const columns = [ + makeColumn('Конструкция секции', 'sectionType'), + makePlanFactColumns('Глубина, м', 'wellDepth'), + makePlanFactColumns('Период, д', 'buildDays'), + makePlanFactColumns('Механическая скорость проходки, м/час', 'rateOfPenetration'), + makePlanFactColumns('Рейсовая скорость, м/час', 'routeSpeed'), + makePlanFactColumns('Скорость подъема КНБК', 'bhaUpSpeed'), + makePlanFactColumns('Скорость спуска КНБК', 'bhaDownSpeed'), + makePlanFactColumns('Скорость спуска обсадной колонны', 'casingDownSpeed'), +] + +// const data = [{ +// sectionType: 'загагулина', +// wellDepthPlan: 1, +// wellDepthFact: 1, +// buildDaysPlan: 1, +// buildDaysFact: 1, +// rateOfPenetrationPlan: 4, +// rateOfPenetrationFact: 3, +// routeSpeedPlan: 2, +// routeSpeedFact: 1, +// bhaUpSpeedPlan: 1, +// bhaUpSpeedFact: 1, +// bhaDownSpeedPlan: 1, +// bhaDownSpeedFact: 1, +// casingDownSpeedPlan: 1, +// casingDownSpeedFact: 1, +// }] + +export default function WellStat({data}){ + const [showLoader, setShowLoader] = useState(false) + return( + +
record.sectionType} + /> + ) +} \ No newline at end of file