diff --git a/src/components/SmboPlate.jsx b/src/components/SmboPlate.jsx new file mode 100644 index 0000000..fe501ec --- /dev/null +++ b/src/components/SmboPlate.jsx @@ -0,0 +1,61 @@ +import {Modal} from 'antd' +import '../styles/smbo.css' + +import {useState} from "react"; + +export const SqueareIndicator = ({state}) =>{ + let bgColor = "#AAA" + switch (state){ + case 1: + bgColor = "#1B1" + break; + case 2: + bgColor = "#DD1" + break; + case 3: + bgColor = "#D11" + break; + } + return ( + + ) +} + +export default function SmboPlate({title, state, operatingTime, units, children}){ + const [isModalVisible, setIsModalVisible] = useState(false) + + + const openModal = () => { + setIsModalVisible(!!children) + } + + const closeModal = () => { + setIsModalVisible(false) + } + + return(<>
+
{title}
+
+ +
наработка:
+
{operatingTime}
+
{units??'ч'}
+ +
+ + +
+ {children} +
+
+ ) +} \ No newline at end of file diff --git a/src/components/modalWindows/EquipmentDetails.jsx b/src/components/modalWindows/EquipmentDetails.jsx new file mode 100644 index 0000000..7a21bff --- /dev/null +++ b/src/components/modalWindows/EquipmentDetails.jsx @@ -0,0 +1,61 @@ +import {Row, Col} from 'antd' +import {InboxOutlined} from '@ant-design/icons' +import {useState} from "react" +import {useParams} from 'react-router-dom' +import '../../styles/equipment_details.css' +import Documents from '../Documents' + +const collectionOfLinesForStates = [ + {label: 'Состояние', unit: ''}, + {label: 'Полная наработка', unit: 'ч'}, + {label: 'Наработка после ТО1', unit: 'ч'}, + {label: 'Наработка после ТО1', unit: 'ч'}, + {label: 'Наработка вне р/р', unit: 'ч'}, + {label: 'Периодичность ТО1', unit: 'ч'}, + {label: 'Периодичность ТО2', unit: 'ч'}, +] + +const collectionOfLinesForIndicators = [ + {label: 'Скорость вращения', unit: 'Об/мин'}, + {label: 'Крутящий момент', unit: 'кН*м'}, + {label: 'Общий уровень вибрации', unit: 'мм/с'}, + {label: 'Уровень масла в баке', unit: 'м'}, + {label: 'Т верхнего подшипника', unit: '°C'}, + {label: 'Т нижнего подшипника', unit: '°C'}, + {label: 'Состояние ПЧ1', unit: ''}, + {label: 'Состояние ПЧ2', unit: ''}, +] + +export default function EquipmentDetails() { + let stateOfEquipmentDetails = collectionOfLinesForStates.map(item => { + return( +

{item.label}: {item.unit}

+ ) + }) + + let indicatorsOfEquipmentDetail = collectionOfLinesForIndicators.map(item => { + return( +

{item.label}: {item.unit}

+ ) + }) + + return (<> + + + Тест 1 + + + {stateOfEquipmentDetails} + + +
+ + + + + + {indicatorsOfEquipmentDetail} + + + ) +} \ No newline at end of file diff --git a/src/pages/Well.jsx b/src/pages/Well.jsx index f8ac02b..8372e8a 100644 --- a/src/pages/Well.jsx +++ b/src/pages/Well.jsx @@ -9,6 +9,7 @@ import WellAnalysis from "../pages/WellAnalysis"; import TelemetryView from "../pages/TelemetryView"; import MenuDocuments from "../components/MenuDocuments"; import WellStat from "./WellStat"; +import Smbo from "./Smbo"; const { Content } = Layout @@ -77,6 +78,9 @@ export default function Well() { Последние данные + }> + СМБО + @@ -106,6 +110,9 @@ export default function Well() { + + + diff --git a/src/styles/equipment_details.css b/src/styles/equipment_details.css new file mode 100644 index 0000000..8ad648f --- /dev/null +++ b/src/styles/equipment_details.css @@ -0,0 +1,3 @@ +span.right-text { + float: right; +} \ No newline at end of file diff --git a/src/styles/smbo.css b/src/styles/smbo.css new file mode 100644 index 0000000..762a80f --- /dev/null +++ b/src/styles/smbo.css @@ -0,0 +1,83 @@ +.smbo_container{ + display: grid; + column-gap: 4px; + row-gap: 4px; + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; + grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; + justify-items: stretch; + align-items: stretch; +} + +.smbo_rig_plan{ + grid-column-start: 2; + grid-row-start: 2; +} + +.plate_container{ + background-color: #00000010; + display: grid; + grid-template-columns: 3fr 1fr; + grid-template-rows: auto; + padding: 6px; + margin: 4px; + height: 100%; + width: 100%; +} + +.plate_title{ + grid-column: 1 / span 2; + grid-row: 1 / 1; + font-weight: bold; +} + +.plate_state{ + grid-column: 3 / span 1; + grid-row: 1 / span 1; +} + +.plate_param{ + grid-row: 2 / span 1; +} + +.plate_param_title{ + grid-column: 1 / span 1; +} + +.plate_param_value{ + grid-column: 2 / span 1; + font-weight: bold; + place-self: start end; + margin-right: 4px; +} + +.plate_param_units{ + grid-column: 3 / span 1; +} + +.c1{ grid-column-start: 1; } +.c2{ grid-column-start: 2; } +.c3{ grid-column-start: 3; } +.c4{ grid-column-start: 4; } +.c5{ grid-column-start: 5; } +.c6{ grid-column-start: 6; } +.c7{ grid-column-start: 7; } +.c8{ grid-column-start: 8; } + +.r1{ grid-row-start: 1; } +.r2{ grid-row-start: 2; } +.r3{ grid-row-start: 3; } +.r4{ grid-row-start: 4; } +.r5{ grid-row-start: 5; } +.r6{ grid-row-start: 6; } +.r7{ grid-row-start: 7; } +.r8{ grid-row-start: 8; } + +.cspan-4{ grid-column-end: 4 start;} + +.rspan-6{ grid-row-end: 6 start;} + +.rspan-7{ grid-row-end: 7 start;} + +.center{ + place-self: center stretch; +}