diff --git a/src/components/Display.jsx b/src/components/Display.jsx index 6ba5862..8576b5c 100644 --- a/src/components/Display.jsx +++ b/src/components/Display.jsx @@ -16,7 +16,7 @@ export const ValueDisplay = ({prefix, value, suffix, isArrowVisible, format}) => }) useEffect(()=>{ - if(value === undefined || value === null){ + if(value === undefined || value === null || value === '-' || value === '--'){ setVal('---') return } @@ -41,10 +41,12 @@ export const ValueDisplay = ({prefix, value, suffix, isArrowVisible, format}) => return } - let valueDate = moment(value) - if(valueDate.isValid()){ - setVal(valueDate.format(format)) - return + if(value.length > 4){ + let valueDate = moment(value) + if(valueDate.isValid()){ + setVal(valueDate.format(format)) + return + } } setVal(value) diff --git a/src/components/EditableTable.jsx b/src/components/EditableTable.jsx index 2062a63..cddc42f 100644 --- a/src/components/EditableTable.jsx +++ b/src/components/EditableTable.jsx @@ -77,7 +77,7 @@ export const EditableTable = ({ ...form.initialValues, key:newRowKeyValue } - const newData = [...data, newRow] + const newData = [newRow, ...data] setData(newData) edit(newRow) } diff --git a/src/components/UserOfWells.jsx b/src/components/UserOfWells.jsx deleted file mode 100644 index 97324d9..0000000 --- a/src/components/UserOfWells.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Display } from './Display' - -export const UserOfWells = ({ data }) => { - const dataLast = data[data.length - 1] - - const lines = [ - { label: 'Пользователь', accessorName: 'user' }, - ] - - if (dataLast) - lines.forEach(line => line.value = dataLast[line.accessorName] ?? '-') - else - lines.forEach(line => line.value = '-') - - return (<> - {lines.map(line => )} - ) -} \ No newline at end of file diff --git a/src/pages/Smbo.jsx b/src/pages/Smbo.jsx index 120bd3e..dd101f0 100644 --- a/src/pages/Smbo.jsx +++ b/src/pages/Smbo.jsx @@ -1,7 +1,7 @@ import SmboPlate from '../components/SmboPlate' import '../styles/smbo.css' import EquipmentDetails from '../components/modalWindows/EquipmentDetails' -import ActiveMessagesOnline from "../components/ActiveMessagesOnline" +import ActiveMessagesOnline from "./TelemetryView/ActiveMessagesOnline" // import RigPlan from "../images/smbo/RigPlan2.png" const platesData = [ diff --git a/src/components/ActiveMessagesOnline.jsx b/src/pages/TelemetryView/ActiveMessagesOnline.jsx similarity index 87% rename from src/components/ActiveMessagesOnline.jsx rename to src/pages/TelemetryView/ActiveMessagesOnline.jsx index 6b33a61..aff20eb 100644 --- a/src/components/ActiveMessagesOnline.jsx +++ b/src/pages/TelemetryView/ActiveMessagesOnline.jsx @@ -1,11 +1,13 @@ import {useState, useEffect} from 'react' -import {MessageService} from '../services/api' -import {Subscribe} from '../services/signalr' -import moment from 'moment' -import notify from "../components/notify" -import '../styles/message.css' import {Table} from "antd"; -import LoaderPortal from "./LoaderPortal" +import moment from 'moment' + +import LoaderPortal from '../../components/LoaderPortal' +import notify from "../../components/notify" + +import {Subscribe} from '../../services/signalr' +import {MessageService} from '../../services/api' +import '../../styles/message.css' // Словарь категорий для строк таблицы const categoryDictionary = { @@ -56,7 +58,7 @@ export default function ActiveMessagesOnline({idWell}) { const update = async () => { setLoader(true) try { - const messages = await MessageService.getMessage(idWell) + const messages = await MessageService.getMessages(idWell, 0, 4) handleReceiveMessages(messages) } catch (ex) { diff --git a/src/components/ChartTimeOnlineFooter.jsx b/src/pages/TelemetryView/ChartTimeOnlineFooter.jsx similarity index 95% rename from src/components/ChartTimeOnlineFooter.jsx rename to src/pages/TelemetryView/ChartTimeOnlineFooter.jsx index 674caeb..e85b765 100644 --- a/src/components/ChartTimeOnlineFooter.jsx +++ b/src/pages/TelemetryView/ChartTimeOnlineFooter.jsx @@ -1,4 +1,4 @@ -import {ValueDisplay} from './Display' +import {ValueDisplay} from '../../components/Display' import {ControlOutlined} from '@ant-design/icons' import {Popover} from 'antd' diff --git a/src/components/Column.jsx b/src/pages/TelemetryView/Column.jsx similarity index 89% rename from src/components/Column.jsx rename to src/pages/TelemetryView/Column.jsx index 19e5af3..2aa9f6e 100644 --- a/src/components/Column.jsx +++ b/src/pages/TelemetryView/Column.jsx @@ -1,5 +1,5 @@ -import {Display} from "./Display"; -import {ChartTimeOnline} from "./charts/ChartTimeOnline"; +import {Display} from "../../components/Display"; +import {ChartTimeOnline} from "../../components/charts/ChartTimeOnline"; import {ChartTimeOnlineFooter} from "./ChartTimeOnlineFooter"; export const Column = ({lineGroup, data, interval, showBorder}) => { diff --git a/src/components/CustomColumn.jsx b/src/pages/TelemetryView/CustomColumn.jsx similarity index 92% rename from src/components/CustomColumn.jsx rename to src/pages/TelemetryView/CustomColumn.jsx index 597a2a5..0b49bd2 100644 --- a/src/components/CustomColumn.jsx +++ b/src/pages/TelemetryView/CustomColumn.jsx @@ -1,5 +1,5 @@ -import {Display} from './Display' -import RigMnemo from '../components/RigMnemo' +import {Display} from '../../components/Display' +import RigMnemo from '../../components/RigMnemo' const params = [ {label:'Рот., об/мин', accessorName:'rotorSpeed', isArrowVisible:true}, diff --git a/src/pages/TelemetryView/UserOfWells.jsx b/src/pages/TelemetryView/UserOfWells.jsx new file mode 100644 index 0000000..144c8e9 --- /dev/null +++ b/src/pages/TelemetryView/UserOfWells.jsx @@ -0,0 +1,9 @@ +import { Display } from '../../components/Display' + +export const UserOfWells = ({ data }) => { + const dataLast = data[data.length - 1] + + return +} \ No newline at end of file diff --git a/src/pages/TelemetryView.jsx b/src/pages/TelemetryView/index.jsx similarity index 86% rename from src/pages/TelemetryView.jsx rename to src/pages/TelemetryView/index.jsx index 0492c36..ecea287 100644 --- a/src/pages/TelemetryView.jsx +++ b/src/pages/TelemetryView/index.jsx @@ -1,16 +1,18 @@ import {useState, useEffect} from 'react' -import {useParams} from 'react-router-dom' import {Row, Col, Select} from 'antd' -import LoaderPortal from '../components/LoaderPortal' -import {Column} from '../components/Column' -import {CustomColumn} from '../components/CustomColumn' -import {UserOfWells} from '../components/UserOfWells' -import {Subscribe} from '../services/signalr' -import {DataService} from '../services/api' -import '../styles/message.css' -import notify from "../components/notify" -import {ModeDisplay} from "../components/ModeDisplay" -import ActiveMessagesOnline from '../components/ActiveMessagesOnline' + +import {Column} from './Column' +import {CustomColumn} from './CustomColumn' +import ActiveMessagesOnline from './ActiveMessagesOnline' + +import LoaderPortal from '../../components/LoaderPortal' +import {UserOfWells} from './UserOfWells' +import {Subscribe} from '../../services/signalr' +import {DataService} from '../../services/api' +import {ModeDisplay} from "../../components/ModeDisplay" +import notify from "../../components/notify" + +import '../../styles/message.css' const {Option} = Select @@ -133,8 +135,7 @@ const timePeriodCollection = [ const defaultChartInterval = '600' -export default function TelemetryView(props) { - let {id} = useParams() +export default function TelemetryView({idWell}) { const [saubData, setSaubData] = useState([]) const [chartInterval, setChartInterval] = useState(defaultChartInterval) @@ -152,25 +153,25 @@ export default function TelemetryView(props) { const update = async () => { setLoader(true) try { - const data = await DataService.getData(id) + const data = await DataService.getData(idWell) handleReceiveDataSaub(data) } catch (ex) { - notify(`Не удалось получить данные по скважине "${id}"`, 'error') + notify(`Не удалось получить данные по скважине "${idWell}"`, 'error') console.log(ex) } setLoader(false) - return Subscribe('hubs/telemetry', 'ReceiveDataSaub', `well_${id}`, handleReceiveDataSaub) + return Subscribe('hubs/telemetry', 'ReceiveDataSaub', `well_${idWell}`, handleReceiveDataSaub) } update() - }, [id]) + }, [idWell]) useEffect(() => { setLoader(true) - DataService.getData(id, null, chartInterval) + DataService.getData(idWell, null, chartInterval) .then(handleReceiveDataSaub) .catch(error => console.error(error)) .finally(() => setLoader(false)) - }, [id, chartInterval]) + }, [idWell, chartInterval]) const colSpan = 24 / (paramsGroups.length) @@ -205,6 +206,6 @@ export default function TelemetryView(props) { - + ) } \ No newline at end of file diff --git a/src/pages/Well.jsx b/src/pages/Well.jsx index 588fb09..05f622d 100644 --- a/src/pages/Well.jsx +++ b/src/pages/Well.jsx @@ -6,7 +6,7 @@ import Messages from "../pages/Messages"; import Report from "../pages/Report"; import Analysis from "../pages/Analysis"; import WellAnalysis from "../pages/WellAnalysis"; -import TelemetryView from "../pages/TelemetryView"; +import TelemetryView from "./TelemetryView"; import MenuDocuments from "../components/MenuDocuments"; import WellStat from "./WellStat" import Smbo from "./Smbo" @@ -14,8 +14,8 @@ import Smbo from "./Smbo" const { Content } = Layout export default function Well() { - let { id } = useParams() - const rootPath = `/well/${id}` + let { id: idWell } = useParams() + const rootPath = `/well/${idWell}` const {SubMenu} = Menu @@ -87,7 +87,7 @@ export default function Well() { - + @@ -99,13 +99,13 @@ export default function Well() { - + - +