директория концепта удалена

This commit is contained in:
goodmice 2022-07-29 18:19:53 +05:00
parent 54149fef8f
commit 183e9b8cde
12 changed files with 0 additions and 1306 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,92 +0,0 @@
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" id="svg736" viewBox="0 0 8006.9226 3574.0189"
style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
version="1.1" height="38.606144mm" width="86.490891mm" xml:space="preserve">
<metadata id="metadata740">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs674">
<style id="style669" type="text/css">
<![CDATA[
.fil4 {
fill: none
}
.fil1 {
fill: #2D2242
}
.fil3 {
fill: #9D9E9E
}
.fil0 {
fill: #E31E24
}
.fil2 {
fill: #FEFEFE
}
.fil5 {
fill: #2D2242;
fill-rule: nonzero
}
]]>
</style>
<clipPath id="id0">
<path id="path671"
d="m 5189,716 c 587,0 1063,476 1063,1063 0,587 -476,1063 -1063,1063 -588,0 -1064,-476 -1064,-1063 0,-587 476,-1063 1064,-1063 z" />
</clipPath>
</defs>
<g transform="translate(-1018.0595)" id="Слой_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer" />
<g id="_661845560">
<path style="fill:#e31e24" id="path677"
d="M 1756,3564 H 1018 L 3236,2 3848,3 4452,0 4400,184 C 4637,66 4905,0 5189,0 5751,0 6253,261 6579,669 l -233,810 C 6213,964 5745,584 5189,584 c -528,0 -975,341 -1134,815 l -30,108 c -20,87 -31,178 -31,272 0,660 535,1195 1195,1195 318,0 607,-125 821,-327 l -220,764 c -185,88 -388,147 -601,147 -636,0 -1194,-334 -1508,-836 l -239,842 h -702 l 187,-595 H 2146 Z M 3082,2443 3703,446 2463,2444 Z"
class="fil0" />
<path style="fill:#e31e24" id="path679"
d="m 7725,3574 c -392,-2 -748,-14 -1152,-2 L 5869,3559 6882,2 l 1790,1 -136,559 -1176,9 -121,462 h 836 c 570,93 953,697 950,1254 -3,656 -585,1291 -1300,1287 z m -995,-606 c 333,0 665,0 998,2 381,2 691,-335 693,-686 1,-291 -206,-632 -510,-673 h -824 z"
class="fil0" />
<polygon style="fill:#2d2242" id="polygon681" points="5347,1437 5105,1437 5105,1315 5347,1315 " class="fil1" />
<polygon style="fill:#2d2242" id="polygon683" points="5455,1555 4992,1555 4992,1469 5455,1469 " class="fil1" />
<polygon style="fill:#2d2242" id="polygon685" points="5597,2523 4860,2523 5027,1587 5419,1587 " class="fil1" />
<polygon style="fill:#fefefe" id="polygon687" points="5166,1737 5061,1830 5089,1676 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon689" points="5288,1737 5393,1830 5365,1676 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon691" points="5224,1696 5285,1654 5172,1654 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon693" points="5143,2007 5019,2062 5039,1952 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon695" points="5310,2007 5435,2062 5415,1952 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon697" points="5091,1894 5229,1962 5365,1894 5229,1783 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon699" points="5052,2132 5232,2251 5412,2130 5229,2043 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon701" points="5163,2297 4949,2445 4996,2184 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon703" points="5292,2297 5505,2445 5458,2184 " class="fil2" />
<polygon style="fill:#fefefe" id="polygon705" points="5226,2337 5497,2523 4958,2523 " class="fil2" />
<polygon style="fill:#2d2242" id="polygon707" points="5246,2523 5200,2523 5200,1735 5246,1735 " class="fil1" />
<g id="g709" />
<g id="g722" clip-path="url(#id0)">
<g id="_661862656">
<path style="fill:#9d9e9e" id="path711" d="m 5136,177 c -688,66 -1152,378 -1415,911 l 1475,-196 783,591 z"
class="fil3" />
<path style="fill:#9d9e9e" id="path713" d="M 6684,1229 C 6401,599 5957,260 5367,182 l 659,1333 -308,931 z"
class="fil3" />
<path style="fill:#2d2242" id="path715" d="m 6189,3044 c 509,-466 692,-994 581,-1579 l -1059,1044 -981,-1 z"
class="fil1" />
<path style="fill:#2d2242" id="path717" d="m 4267,3105 c 598,345 1157,360 1681,78 L 4633,2488 4337,1552 Z"
class="fil1" />
<path style="fill:#2d2242" id="path719" d="m 3626,1346 c -142,676 17,1212 447,1622 l 253,-1466 798,-571 z"
class="fil1" />
</g>
</g>
<path style="fill:none" id="path724"
d="m 5189,716 c 587,0 1063,476 1063,1063 0,587 -476,1063 -1063,1063 -588,0 -1064,-476 -1064,-1063 0,-587 476,-1063 1064,-1063 z"
class="fil4" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,350 +0,0 @@
import { useState } from 'react';
import {Table, Input, Form, Popconfirm, Typography } from 'antd'
const originData = [
{
key: '1', probeNumber: '', probeExtractionDepth: '', sandstone: '', siltstone: '', argillit: '', brokenArgillit: '', coal: '', sand: '', clay: '',
camstone: '', cement: '', summary: '', drillingMud: '', sludge: '', maxSum: '', methan: '', ethan: '', propan: '', butan: '', pentan: ''
}
]
const EditableCell = ({
editing,
dataIndex,
title,
inputType,
record,
index,
children,
...restProps
}) => {
return (
<td {...restProps} style={{paddingLeft: 2, paddingRight: 2}}>
<div style={{width: '100%', display: 'flex', justifyContent: 'center'}}>
{editing ? (
<Form.Item
name={dataIndex}
style={{ margin: 0 }}
rules={[
{
required: true,
message: '',
pattern: /(-?[1-9]+\d*([.,]\d+)?)$|^(-?0[.,]\d*[1-9]+)$|^0$|^0.0$/
},
]}
>
<Input size="small" />
</Form.Item>
) : (
children
)}
</div>
</td>
);
};
export function SludgeDiagram() {
const [form] = Form.useForm();
const [data, setData] = useState(originData);
const [editingKey, setEditingKey] = useState('');
const isEditing = (row) => row.key === editingKey;
const columns = [
{
title: 'N пробы',
key: 'probeNumber',
dataIndex: 'probeNumber',
align: 'center',
className: 'yellow-background',
editable: true
},
{
title: 'Глубина отбора пробы',
key: 'probeExtractionDepth',
dataIndex: 'probeExtractionDepth',
align: 'center',
className: 'yellow-background',
editable: true
},
{
title: 'Литология',
key: 'lithology',
dataIndex: 'lithology',
align: 'center',
className: 'yellow-background',
editable: true,
children: [
{
title: 'Песчаник (%)',
key: 'sandstone',
dataIndex: 'sandstone',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Алевролит (%)',
key: 'siltstone',
dataIndex: 'siltstone',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Аргиллит (%)',
key: 'argillit',
dataIndex: 'argillit',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Аргиллит бит. (%)',
key: 'brokenArgillit',
dataIndex: 'verticalDepth',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Уголь (%)',
key: 'coal',
dataIndex: 'coal',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Песок (%)',
key: 'sand',
dataIndex: 'sand',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Глина (%)',
key: 'clay',
dataIndex: 'clay',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Известняк (%)',
key: 'camstone',
dataIndex: 'camstone',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'Цемент (%)',
key: 'cement',
dataIndex: 'cement',
align: 'center',
className: 'lightpurple-background',
editable: true
}
]
},
{
title: 'Краткое описание',
key: 'summary',
dataIndex: 'summary',
align: 'center',
className: 'yellow-background',
editable: true
},
{
title: 'ЛБА бурового раствора',
key: 'drillingMud',
dataIndex: 'drillingMud',
align: 'center',
className: 'lightgray-background',
editable: true
},
{
title: 'ЛБА (шлама)',
key: 'sludge',
dataIndex: 'sludge',
align: 'center',
className: 'lightorange-background',
editable: true
},
{
title: 'Газопоказания',
key: 'gasIndications',
dataIndex: 'gasIndications',
align: 'center',
className: 'yellow-background',
children: [
{
title: 'Сумма УВ мах. (абс%)',
key: 'maxSum',
dataIndex: 'maxSum',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'С1 метан (отн%)',
key: 'methane',
dataIndex: 'depthPlanFactDifference',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'С2 этан (отн%)',
key: 'ethan',
dataIndex: 'ethan',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'С3 пропан (отн%)',
key: 'propane',
dataIndex: 'propane',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'С4 бутан (отн%)',
key: 'butane',
dataIndex: 'butane',
align: 'center',
className: 'lightpurple-background',
editable: true
},
{
title: 'С5 пентан (отн%)',
key: 'pentane',
dataIndex: 'pentane',
align: 'center',
className: 'lightpurple-background',
editable: true
}
]
},
{
title: 'Мех. скорость',
key: 'mechanicalSpeed',
dataIndex: 'mechanicalSpeed',
align: 'center',
className: 'yellow-background',
editable: true
},
{
title: 'Предварительное заключение о насыщении по ГК',
key: 'preliminaryConclusion',
dataIndex: 'preliminaryConclusion',
align: 'center',
className: 'lightorange-background',
editable: true
},
{
title: 'Действие',
dataIndex: 'action',
align: 'center',
width: 150,
className: 'small-font',
render: (_, row) => {
const editable = isEditing(row);
return editable ? (
<span>
<a
href="javascript:;"
onClick={() => save(row.key)}
style={{ marginRight: 8 }}
>
Сохранить
</a>
<Popconfirm style={{width: '100px'}} title={<span>Отменить<br />редактирование?</span>} onConfirm={cancel}>
<a>Отменить</a>
</Popconfirm>
</span>
) : (
<Typography.Link disabled={editingKey !== ''} onClick={() => edit(row)}>
Редактировать
</Typography.Link>
);
},
}
];
const mapColumns = (col) => {
if(col.children)
col.children = col.children.map(mapColumns)
if (!col.editable) {
return col;
}
return {
...col,
onCell: (row) => ({
row,
dataIndex: col.dataIndex,
title: col.title,
editing: isEditing(row)
}),
};
}
const mergedColumns = columns.map(mapColumns);
const edit = (row) => {
form.setFieldsValue({
...row
});
setEditingKey(row.key);
};
const cancel = () => {
setEditingKey('');
};
const save = async (key) => {
try {
const row = await form.validateFields();
const newData = [...data];
const index = newData.findIndex((item) => key === item.key);
if (index > -1) {
const item = newData[index];
newData.splice(index, 1, { ...item, ...row });
setData(newData);
setEditingKey('');
} else {
newData.push(row);
setData(newData);
setEditingKey('');
}
} catch (errInfo) {
console.log('Validate Failed:', errInfo);
}
};
return (<>
<Form form={form} component={false}>
<Table
components={{
body: {
cell: EditableCell,
},
}}
columns={mergedColumns}
dataSource={data}
size={'small'}
bordered={true}
pagination={false}
/>
</Form>
</>
)
}

View File

@ -1,39 +0,0 @@
import {Row, Col} from 'antd'
import Documents from '../Documents/DocumentsTemplate'
import '@styles/equipment_details.css'
export default function EquipmentDetails({ id, equipmentTimers, equipmentSensors }) {
let stateOfEquipmentDetails = equipmentTimers.map(timer => {
return(
<p key={timer.label}>{timer.label}: <span className="right-text"><b>{timer.value} {timer.unit}</b></span></p>
)
})
let indicatorsOfEquipmentDetail = equipmentSensors.map(sensor => {
return(
<p key={sensor.label}>{sensor.label}: <span className="right-text"><b>{sensor.value} {sensor.unit}</b></span></p>
)
})
return (<>
<Row Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }} align="middle">
<Col span={12}>
Тест 1
</Col>
<Col span={12}>
{stateOfEquipmentDetails}
</Col>
</Row>
<br/>
<Row Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }} align="middle">
<Col span={12}>
<Documents idWell={id}/>
</Col>
<Col span={12}>
{indicatorsOfEquipmentDetail}
</Col>
</Row>
</>)
}

View File

@ -1,67 +0,0 @@
import {Modal} from 'antd'
import '../../styles/smbo.css'
import {useState} from "react";
export const SquareIndicator = ({state}) =>{
let bgColor = "#AAA"
switch (state){
case 1:
bgColor = "#1B1"
break
case 2:
bgColor = "#DD1"
break
case 3:
bgColor = "#D11"
break
default:
break
}
return (<svg width="32" height="32" version="1.1" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg">
<rect x=".25" y=".25" width="12" height="12"
fill={bgColor}
stroke="#ececec" strokeLinejoin="round" strokeWidth=".51"/>
</svg>)
}
export default function SmboPlate({title, state, operatingTime, units, children, captionValue}){
const [isModalVisible, setIsModalVisible] = useState(false)
const openModal = () => {
setIsModalVisible(!!children)
}
const closeModal = () => {
setIsModalVisible(false)
}
const plates_smbo_equip = (
<div className="plate_container" onClick={openModal}>
<div className="plate_title">{title}</div>
<div className="plate_state"><SquareIndicator state={state}/></div>
<div className="plate_param_title">{captionValue??'наработка'} :</div>
<div className="plate_param_value">{operatingTime}</div>
<div className="plate_param_units">{units??'ч'}</div>
</div>
)
return(<>
{plates_smbo_equip}
<Modal
title={title}
centered
visible={isModalVisible}
onOk={closeModal}
onCancel={closeModal}
width={800}
>
<div>
{children}
</div>
</Modal>
</>)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 KiB

View File

@ -1,614 +0,0 @@
import SmboPlate from './SmboPlate'
import EquipmentDetails from './EquipmentDetails'
import '../../styles/smbo.css'
const platesData = [
{
id: 1,
title: 'Теплогенератор',
placeHolderId: 1,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
//captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r1'
},
// {
// id: 2,
// title: 'Емкости бурового раствора',
// placeHolderId: 2,
// state: 1,
// equipmentTimers: [
// {label: 'Полная наработка', value: 1, unit: 'ч'},
// {label: 'Наработка после ТО1', value: 1, unit: 'ч'},
// {label: 'Наработка после ТО1', value: 1, unit: 'ч'},
// {label: 'Наработка вне р/р', value: 1, unit: 'ч'},
// {label: 'Периодичность ТО1', value: 1, unit: 'ч'},
// {label: 'Периодичность ТО2', value: 1, unit: 'ч'},
// ],
// equipmentSensors: [
// {label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
// {label: 'Крутящий момент', value: 1, unit: 'кН*м'},
// {label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
// {label: 'Уровень масла в баке', value: 1, unit: 'м'},
// {label: 'Т верхнего подшипника', value: 1, unit: '°C'},
// {label: 'Т нижнего подшипника', value: 1, unit: '°C'},
// {label: 'Состояние ПЧ1', value: 1, unit: ''},
// {label: 'Состояние ПЧ2', value: 1, unit: ''},
// ],
// captionValue: 'У-У-У-у-у-у',
// custom: 'Я не понял про это',
// className: 'c2 r1'
// },
{
id: 3,
title: 'Подпорные насосы',
placeHolderId: 3,
state: 2,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c3 r1'
},
{
id: 4,
title: 'Буровой насос №1',
placeHolderId: 4,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c4 r1'
},
{
id: 5,
title: 'Буровой насос №2',
placeHolderId: 5,
state: 0,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c5 r1'
},
{
id: 6,
title: 'Талевый канат',
placeHolderId: 6,
state: 2,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r1'
},
{
id: 7,
title: 'Станция управления ВСП',
placeHolderId: 7,
state: 3,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r2'
},
{
id: 8,
title: 'Компрессорный блок',
placeHolderId: 8,
state: 3,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r2'
},
{
id: 9,
title: 'Лебедка буровая',
placeHolderId: 9,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r3'
},
{
id: 10,
title: 'Блок сопротивлений и КТУ',
placeHolderId: 10,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r3'
},
{
id: 11,
title: 'Вспомогательная лебедка',
placeHolderId: 11,
state: 0,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r4'
},
{
id: 12,
title: 'Блок НКУ',
placeHolderId: 12,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r4'
},
{
id: 13,
title: 'Гидрорасцепитель',
placeHolderId: 13,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r5'
},
{
id: 14,
title: 'Блок КРУ',
placeHolderId: 14,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r5'
},
{
id: 15,
title: 'Привод ВСП',
placeHolderId: 15,
state: 2,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r6'
},
{
id: 16,
title: 'Теплогенератор',
placeHolderId: 16,
state: 3,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'А вот тут, совсем не У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r6'
},
{
id: 17,
title: 'Теплогенератор',
placeHolderId: 17,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r7'
},
{
id: 18,
title: 'Теплогенератор',
placeHolderId: 18,
state: 0,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'наработка',
custom: 'Я не понял про это',
className: 'c6 r7'
},
{
id: 19,
title: 'Теплогенератор',
placeHolderId: 19,
state: 0,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c1 r8'
},
{
id: 20,
title: 'Теплогенератор',
placeHolderId: 20,
state: 1,
equipmentTimers: [
{label: 'Полная наработка', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка после ТО1', value: 1, unit: 'ч'},
{label: 'Наработка вне р/р', value: 1, unit: 'ч'},
{label: 'Периодичность ТО1', value: 1, unit: 'ч'},
{label: 'Периодичность ТО2', value: 1, unit: 'ч'},
],
equipmentSensors: [
{label: 'Скорость вращения', value: 1, unit: 'Об/мин'},
{label: 'Крутящий момент', value: 1, unit: 'кН*м'},
{label: 'Общий уровень вибрации', value: 1, unit: 'мм/с'},
{label: 'Уровень масла в баке', value: 1, unit: 'м'},
{label: 'Т верхнего подшипника', value: 1, unit: '°C'},
{label: 'Т нижнего подшипника', value: 1, unit: '°C'},
{label: 'Состояние ПЧ1', value: 1, unit: ''},
{label: 'Состояние ПЧ2', value: 1, unit: ''},
],
captionValue: 'У-У-У-у-у-у',
custom: 'Я не понял про это',
className: 'c6 r8'
},
]
const placeholderIdDictionary = {
1: {gridRowStart: 8, gridColumnStart: 1},
2: {gridRowStart: 7, gridColumnStart: 1},
3: {gridRowStart: 6, gridColumnStart: 1},
4: {gridRowStart: 5, gridColumnStart: 1},
5: {gridRowStart: 4, gridColumnStart: 1},
6: {gridRowStart: 3, gridColumnStart: 1},
7: {gridRowStart: 2, gridColumnStart: 1},
8: {gridRowStart: 1, gridColumnStart: 1},
9: {gridRowStart: 1, gridColumnStart: 2},
10: {gridRowStart: 1, gridColumnStart: 3},
11: {gridRowStart: 1, gridColumnStart: 4},
12: {gridRowStart: 1, gridColumnStart: 5},
13: {gridRowStart: 1, gridColumnStart: 6},
14: {gridRowStart: 2, gridColumnStart: 6},
15: {gridRowStart: 3, gridColumnStart: 6},
16: {gridRowStart: 4, gridColumnStart: 6},
17: {gridRowStart: 5, gridColumnStart: 6},
18: {gridRowStart: 6, gridColumnStart: 6},
19: {gridRowStart: 7, gridColumnStart: 6},
20: {gridRowStart: 8, gridColumnStart: 6},
}
const plates = []
for (let i = 1; i < 21; i++) {
const item = platesData.filter(item => item.placeHolderId === i)[0]
const plate = item ? (
<div key={i} style={placeholderIdDictionary[i]} className="pointer">
<SmboPlate
title={item.title}
state={item.state}
operatingTime={item.placeHolderId}
captionValue={item.captionValue}
>
<EquipmentDetails
id={item.id}
title={item.title}
placeHolderId={item.placeHolderId}
equipmentTimers={item.equipmentTimers}
equipmentSensors={item.equipmentSensors}
state={item.state}
captionValue={item.captionValue}
/>
</SmboPlate>
</div>
) : (
<div className="empty_place" style={placeholderIdDictionary[i]} key={i}>{i}</div>
)
plates.push(plate)
}
export default function Smbo() {
return (<>
<div className="smbo_container">
{plates}
{/*<div className="c2 ce5 r2 re7 center">*/}
{/* <img src={RigPlan} alt="План"/>*/}
{/*</div>*/}
<div className="c2 r8 ce6 center">
сообщения
</div>
</div>
</>)
}

View File

@ -1,30 +0,0 @@
import { TelemetryAnalysisDepthToDay } from '../src/components/TelemetryAnalysisDepthToDay'
import { TelemetryAnalysisDepthToInterval } from '../src/components/TelemetryAnalysisDepthToInterval'
import { AnalysisOperationTime } from '../src/components/AnalysisOperationTime'
import { Row, Col } from 'antd'
export default function TelemetryAnalysis({idWell}) {
return (
<>
<Row>&nbsp;</Row>
<Row justify="space-around" align="middle">
<Col span={10}>
<h2>График Глубина-день</h2>
<TelemetryAnalysisDepthToDay idWell={idWell}/>
</Col>
<Col span={10}>
<h2>График Глубина за интервал</h2>
<TelemetryAnalysisDepthToInterval idWell={idWell}/>
</Col>
</Row >
<Row><div style={{height: "150px"}}>&nbsp;</div></Row>
<Row justify="space-around" align="middle">
<Col span={10}>
<h2>График Операция за время</h2>
<AnalysisOperationTime idWell={idWell}/>
</Col>
</Row>
</>
)
}

View File

@ -1,113 +0,0 @@
import LoaderPortal from '../src/components/LoaderPortal'
import { useState, useEffect } from "react";
import {makeColumn, makeColumnsPlanFact, RegExpIsFloat} from '../src/components/factory'
import {WellSectionService} from '../src/services/api'
import {invokeWebApiWrapperAsync} from '../src/components/factory'
import { EditableTable } from '../src/components/EditableTable';
import { Input } from 'antd'
const TypeSelector = <Input list={'sectionTypeList'}/>
const DataListSectionTypes = <datalist id="sectionTypeList">
<option value="Пилотный ствол">Пилотный ствол</option>
<option value="Направление">Направление</option>
<option value="Кондуктор">Кондуктор</option>
<option value="Эксплуатационная колонна">Эксплуатационная колонна</option>
<option value="Транспортный ствол">Транспортный ствол</option>
<option value="Хвостовик">Хвостовик</option>
</datalist>
const numericColumnOptions = {
editable: true,
initialValue: 0,
formItemRules: [
{
required: true,
message: `Введите число`,
pattern: RegExpIsFloat,
},
],
};
const columns = [
makeColumn('Конструкция секции', 'sectionType', {editable:true, input:TypeSelector}),
makeColumnsPlanFact('Глубина, м', 'wellDepth', numericColumnOptions),
makeColumnsPlanFact('Период, д', 'buildDays', numericColumnOptions),
makeColumnsPlanFact('Механическая скорость проходки, м/час', 'rateOfPenetration', numericColumnOptions),
makeColumnsPlanFact('Рейсовая скорость, м/час', 'routeSpeed', numericColumnOptions),
makeColumnsPlanFact('Скорость подъема КНБК', 'bhaUpSpeed', numericColumnOptions),
makeColumnsPlanFact('Скорость спуска КНБК', 'bhaDownSpeed', numericColumnOptions),
makeColumnsPlanFact('Скорость спуска обсадной колонны', 'casingDownSpeed', numericColumnOptions),
]
export default function WellStat({idWell}){
const [showLoader, setShowLoader] = useState(false)
const [items, setItems] = useState([])
const addKeysAndUpdateStateData = (items) =>{
const keyedItems = items?.map(item => ({...item, key:item.id}))??[]
setItems(keyedItems)
}
useEffect(() => {
invokeWebApiWrapperAsync(
async () => {
const paginationContainer = await WellSectionService.getAll(idWell, 0, 1024)
addKeysAndUpdateStateData(paginationContainer.items)
},
setShowLoader,
`Не удалось загрузить секции по скважине "${idWell}"`)
} ,[idWell])
const onAdd = (item) => {
invokeWebApiWrapperAsync(
async () => {
const updatedItems = await WellSectionService.insert(idWell, [item])
const newItems = [...items, ...updatedItems]
addKeysAndUpdateStateData(newItems)
},
setShowLoader,
`Не удалось добавить секцию в скважину "${idWell}"`)
}
const onEdit = (item) => {
invokeWebApiWrapperAsync(
async () => {
const updatedItem = await WellSectionService.update(idWell, item.id, item)
const newItems = [...items]
const index = newItems.findIndex((i) => item.key === i.key)
newItems.splice(index, 1, updatedItem)
addKeysAndUpdateStateData(newItems)
},
setShowLoader,
`Не удалось изменить секцию в скважине "${idWell}"`)
}
const onDelete = (item) =>{
invokeWebApiWrapperAsync(
async () => {
await WellSectionService.delete(idWell, [item.id])
const newItems = [...items]
const index = newItems.findIndex((i) => item.key === i.key)
newItems.splice(index, 1)
addKeysAndUpdateStateData(newItems)
},
setShowLoader,
`Не удалось удалить секцию из скважины "${idWell}"`)
}
return(
<LoaderPortal show={showLoader}>
<EditableTable
columns={columns}
dataSource={items}
size={'small'}
bordered
pagination={false}
onRowAdd={onAdd}
onRowEdit={onEdit}
onRowDelete={onDelete}
/>
{DataListSectionTypes}
</LoaderPortal>)
}

View File

@ -1 +0,0 @@
Папка для компонент реализация которых отложена, но наработки уже есть