import {useState, useEffect} from 'react' import {useParams} from 'react-router-dom' import {Row, Col, Select, Table} from 'antd' import {ChartTimeOnline} from '../components/charts/ChartTimeOnline' import LoaderPortal from '../components/LoaderPortal' import {ChartTimeOnlineFooter} from '../components/ChartTimeOnlineFooter' import {CustomColumn} from '../components/CustomColumn' import {UserOfWells} from '../components/UserOfWells' import {ModeDisplay} from '../components/ModeDisplay' import {Display} from '../components/Display' import moment from 'moment' import {Subscribe} from '../services/signalr' import {DataService, MessageService} from '../services/api' import '../styles/message.css' import notify from "../components/notify" const {Option} = Select const dash = [7, 3] const blockHeightGroup = { label: "Высота блока", yDisplay: false, linePv: { label: "blockPosition", units: 'м', xAccessorName: "blockPosition", yAccessorName: "date", color: '#333' }, lineOther: { label: "wellDepth", units: 'м', xAccessorName: "wellDepth", yAccessorName: "date", color: '#333', showLine: false, xConstValue:30 }, } const blockSpeedGroup = { label: "Скорость блока", yDisplay: false, linePv: {label: "blockSpeed", units: 'м/ч', xAccessorName: "blockSpeed", yAccessorName: "date", color: '#0a0'}, lineSp: {label: "blockSpeedSp", units: 'м/ч', xAccessorName: "blockSpeedSp", yAccessorName: "date", color: '#0a0'}, } const pressureGroup = { label: "Давление", yDisplay: false, linePv: {label: "pressure", units: 'атм', xAccessorName: "pressure", yAccessorName: "date", color: '#c00'}, lineSp: {label: "pressureSp", units: 'атм', xAccessorName: "pressureSp", yAccessorName: "date", color: '#c00'}, lineIdle: {label: "pressureIdle", units: 'атм', xAccessorName: "pressureIdle", yAccessorName: "date", color: '#c00'}, linesOther: [ { label: "мекс. перепад", units: 'атм', xAccessorName: "pressureDeltaLimitMax", yAccessorName: "date", color: '#c00' }, ], } const axialLoadGroup = { label: "Осевая нагрузка", yDisplay: false, linePv: {label: "axialLoad", units: 'т', xAccessorName: "axialLoad", yAccessorName: "date", color: '#00a'}, lineSp: {label: "axialLoadSp", units: 'т', xAccessorName: "axialLoadSp", yAccessorName: "date", color: '#00a', dash}, linesOther: [ {label: "axialLoadLimitMax", units: 'т', xAccessorName: "axialLoadLimitMax", yAccessorName: "date", color: '#00a'}, ], } const hookWeightGroup = { label: "Вес на крюке", yDisplay: false, linePv: {label: "hookWeight", units: 'т', xAccessorName: "hookWeight", yAccessorName: "date", color: '#0aa'}, lineIdle: { label: "hookWeightIdle", units: 'т', xAccessorName: "hookWeightIdle", yAccessorName: "date", color: '#0aa', dash }, linesOther: [ { label: "hookWeightLimitMin", units: 'т', xAccessorName: "hookWeightLimitMin", yAccessorName: "date", color: '#0aa' }, { label: "hookWeightLimitMax", units: 'т', xAccessorName: "hookWeightLimitMax", yAccessorName: "date", color: '#0aa' }, ], } const rotorTorqueGroup = { label: "Момент на роторе", yDisplay: false, linePv: {label: "rotorTorque", units: 'кН·м', xAccessorName: "rotorTorque", yAccessorName: "date", color: '#a0a'}, lineSp: {label: "rotorTorqueSp", units: 'кН·м', xAccessorName: "rotorTorqueSp", yAccessorName: "date", color: '#a0a'}, lineIdle: { label: "rotorTorqueIdle", units: 'кН·м', xAccessorName: "rotorTorqueIdle", yAccessorName: "date", color: '#a0a' }, linesOther: [ { label: "rotorTorqueLimitMax", units: 'кН·м', xAccessorName: "rotorTorqueLimitMax", yAccessorName: "date", color: '#a0a' }, ], } const paramsGroups = [blockHeightGroup, blockSpeedGroup, pressureGroup, axialLoadGroup, hookWeightGroup, rotorTorqueGroup] export const Column = ({lineGroup, data, interval, showBorder}) => { let lines = [lineGroup.linePv] if (lineGroup.lineSp) lines.push(lineGroup.lineSp) if (lineGroup.lineOther) lines.push(lineGroup.lineOther) if (lineGroup.lineAvg) lines.push(lineGroup.lineAvg) if (lineGroup.lineMax) lines.push(lineGroup.lineMax) let dataLast = null let pv = null if (data?.length > 0) { dataLast = data[data.length - 1]; if (lineGroup.linePv) pv = dataLast[lineGroup.linePv?.xAccessorName] } return ( <>