import { useState } from 'react';
import {Table, Input, Form, Popconfirm, Typography } from 'antd'
const originData = [
{
key: '1', depth: '', zenithAngle: '', magneticAzimuth: '', trueAzimuth: '', directAzimuth: '', verticalDepth: '', absoluteMark: '', localNorthOffset: '',
localEastOffset: '', outFallOffset: '', offsetAzimuth: '', areaIntensity: '', offsetStopAngle: '', zenithIntensity: '', comment: '', depthPlanFactDifference: '',
distancePlanFactDifference: ''
}
]
const EditableCell = ({
editing,
dataIndex,
title,
inputType,
record,
index,
children,
...restProps
}) => {
return (
{editing ? (
) : (
children
)}
|
);
};
export function Nnb() {
const [form] = Form.useForm();
const [data, setData] = useState(originData);
const [editingKey, setEditingKey] = useState('');
const isEditing = (row) => row.key === editingKey;
const columns = [
{
title: 'Глубина по стволу, м',
key: 'depth',
dataIndex: 'depth',
align: 'center',
editable: true
},
{
title: 'Зенитный угол, град',
key: 'zenithAngle',
dataIndex: 'zenithAngle',
align: 'center',
editable: true
},
{
title: 'Азимут магнитный, град',
key: 'magneticAzimuth',
dataIndex: 'magneticAzimuth',
align: 'center',
editable: true
},
{
title: 'Азимут истинный, град',
key: 'trueAzimuth',
dataIndex: 'trueAzimuth',
align: 'center',
editable: true
},
{
title: 'Азимут дирекц., град',
key: 'directAzimuth',
dataIndex: 'directAzimuth',
align: 'center',
editable: true
},
{
title: 'Глубина по вертикали, м',
key: 'verticalDepth',
dataIndex: 'verticalDepth',
align: 'center',
editable: true
},
{
title: 'Абсолютная отметка, м',
key: 'absoluteMark',
dataIndex: 'absoluteMark',
align: 'center',
editable: true
},
{
title: 'Лок. смещение к северу, м',
key: 'localNorthOffset',
dataIndex: 'localNorthOffset',
align: 'center',
editable: true
},
{
title: 'Лок. смещение к востоку, м',
key: 'localEastOffset',
dataIndex: 'localEastOffset',
align: 'center',
editable: true
},
{
title: 'Отклонение от устья, м',
key: 'outFallOffset',
dataIndex: 'outFallOffset',
align: 'center',
editable: true
},
{
title: 'Азимут смещения, град',
key: 'offsetAzimuth',
dataIndex: 'offsetAzimuth',
align: 'center',
editable: true
},
{
title: 'Пространст. интенсивность, град/10 м',
key: 'areaIntensity',
dataIndex: 'areaIntensity',
align: 'center',
editable: true
},
{
title: 'Угол установки отклон., град',
key: 'offsetStopAngle',
dataIndex: 'offsetStopAngle',
align: 'center',
editable: true
},
{
title: 'Интенсив. по зениту, град/10 м',
key: 'zenithIntensity',
dataIndex: 'zenithIntensity',
align: 'center',
editable: true
},
{
title: 'Комментарий',
key: 'comment',
dataIndex: 'comment',
align: 'center',
editable: true
},
{
title: 'Разница вертикальных глубин между ХХХ (план) и ХХХ (факт)',
key: 'depthPlanFactDifference',
dataIndex: 'depthPlanFactDifference',
align: 'center',
editable: true
},
{
title: 'Расстояние в пространстве между ХХХ (план) и ХХХ (факт)',
key: 'distancePlanFactDifference',
dataIndex: 'distancePlanFactDifference',
align: 'center',
editable: true
},
{
title: 'Действие',
dataIndex: 'action',
align: 'center',
width: 150,
className: 'small-font',
render: (_, row) => {
const editable = isEditing(row);
return editable ? (
save(row.key)}
style={{ marginRight: 8 }}
>
Сохранить
Отменить
редактирование?} onConfirm={cancel}>
Отменить
) : (
edit(row)}>
Редактировать
);
},
}
];
const mergedColumns = columns.map((col) => {
if (!col.editable) {
return col;
}
return {
...col,
onCell: (row) => ({
row,
dataIndex: col.dataIndex,
title: col.title,
editing: isEditing(row),
}),
};
});
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 (<>
>)
}