import { useState, useEffect } from 'react' import { Button, DatePicker, ConfigProvider, Select, Row, Col, } from 'antd' import { useParams } from 'react-router-dom' import { Subscribe } from '../services/signalr' import { DataService } from '../services/api' import 'moment/locale/ru' import locale from 'antd/lib/locale/ru_RU' import { ChartTimeArchive } from '../components/charts/ChartTimeArchive' import { Display } from '../components/Display' import { ChartTimeOnlineFooter } from '../components/ChartTimeOnlineFooter' import { UserOfWells } from '../components/UserOfWells' const { RangePicker } = DatePicker; const { Option } = Select; // Выбор периода времени const RangePickerLocalized = ({locale, ...other}) => { return ( ) } // Выбор "перьев" для графиков - перенести в шапку графика const SelectDataCharts = () => { const linesCollection = [ { label: "Глубина забоя", xAccessorName: "wellDepth", color: '#a0a' }, { label: "Положение инструмента", xAccessorName: "bitDepth", color: '#a0a' }, { label: "Высота талевого блока", xAccessorName: "blockPosition", color: '#a0a' }, { label: "Талевый блок. Мин положение", xAccessorName: "blockPositionMin", color: '#a0a' }, { label: "Талевый блок. Макс положение", xAccessorName: "blockPositionMax", color: '#a0a' }, { label: "Скорость талевого блока", xAccessorName: "blockSpeed", color: '#a0a' }, { label: "Скорости талевого блока. Задание", xAccessorName: "blockSpeedSp", color: '#a0a' }, { label: "Талевый блок. Задание скорости для роторного бурения", xAccessorName: "blockSpeedSpRotor", color: '#a0a' }, { label: "Талевый блок. Задание скорости для режима слайда", xAccessorName: "blockSpeedSpSlide", color: '#a0a' }, { label: "Талевый блок. Задание скорости для проработки", xAccessorName: "blockSpeedSpDevelop", color: '#a0a' }, { label: "Давление", xAccessorName: "pressure", color: '#a0a' }, { label: "Давление. Холостой ход", xAccessorName: "pressureIdle", color: '#a0a' }, { label: "Давление. Задание", xAccessorName: "pressureSp", color: '#a0a' }, { label: "Давление. Задание для роторного бурения", xAccessorName: "pressureSpRotor", color: '#a0a' }, { label: "Давление. Задание для режима слайда", xAccessorName: "pressureSpSlide", color: '#a0a' }, { label: "Давление. Задание для проработки", xAccessorName: "pressureSpDevelop", color: '#a0a' }, { label: "Давление дифф. Аварийное макс.", xAccessorName: "pressureDeltaLimitMax", color: '#a0a' }, { label: "Осевая нагрузка", xAccessorName: "axialLoad", color: '#a0a' }, { label: "Осевая нагрузка. Задание", xAccessorName: "axialLoadSp", color: '#a0a' }, { label: "Осевая нагрузка. Аварийная макс.", xAccessorName: "axialLoadLimitMax", color: '#a0a' }, { label: "Вес на крюке", xAccessorName: "hookWeight", color: '#a0a' }, { label: "Вес на крюке. Холостой ход", xAccessorName: "hookWeightIdle", color: '#a0a' }, { label: "Вес на крюке. Посадка", xAccessorName: "hookWeightLimitMin", color: '#a0a' }, { label: "Вес на крюке. Затяжка", xAccessorName: "hookWeightLimitMax", color: '#a0a' }, { label: "Момент на роторе", xAccessorName: "rotorTorque", color: '#a0a' }, { label: "Момент на роторе. Холостой ход", xAccessorName: "rotorTorqueIdle", color: '#a0a' }, { label: "Момент на роторе. Задание", xAccessorName: "rotorTorqueSp", color: '#a0a' }, { label: "Момент на роторе. Аварийный макс.", xAccessorName: "rotorTorqueLimitMax", color: '#a0a' }, { label: "Обороты ротора", xAccessorName: "rotorSpeed", color: '#a0a' }, { label: "Расход", xAccessorName: "flow", color: '#a0a' }, { label: "Расход. Холостой ход", xAccessorName: "flowIdle", color: '#a0a' }, { label: "Расход. Аварийный макс.", xAccessorName: "flowDeltaLimitMax", color: '#a0a' }, ] const children = linesCollection.map((line) => ()) function handleChange(value) { console.log(`selected ${value}`); } return ( ) } const Column = ({ lineGroup, data, interval }) => { let lines = [lineGroup.linePv] if (lineGroup.lineSp) lines.push(lineGroup.lineSp) let dataLast = null let pv = null if (data?.length > 0) { dataLast = data[data.length - 1]; if (lineGroup.linePv) pv = dataLast[lineGroup.linePv?.xAccessorName] } return ( <> ) } const paramsGroups = [] export default function Archive(props) { let { id } = useParams(); const [saubData, setSaubData] = useState([]) const [chartInterval, setChartInterval] = useState(600) const handleReceiveDataSaub = (data) => { if (data) { setSaubData(data) } } useEffect(() => { DataService.getData(id) .then(handleReceiveDataSaub) .catch(error => console.error(error)) let unSubscribeMessages = Subscribe('ReceiveDataSaub', `well_${id}`, handleReceiveDataSaub) return () => { unSubscribeMessages() } }, [id]); const colSpan = 24 / (paramsGroups.length) return (<>

Архив


Интервал:  {paramsGroups.map(group => )} ) }