import React, { useState, useEffect } from 'react';
import {
Table,
Button,
Modal,
Form,
Input,
InputNumber,
Dropdown,
Alert,
message,
Card,
Descriptions
} from 'antd';
import {
EllipsisOutlined,
PlusOutlined,
EditOutlined,
DeleteOutlined
} from '@ant-design/icons';
import SequenceGeneratorAPI from './sequencegeneratorapi';
const SequenceGenerator = () => {
const [sequences, setSequences] = useState([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const [visible, setVisible] = useState(false);
const [editingId, setEditingId] = useState(null);
const [currentSequence, setCurrentSequence] = useState(null);
const [form] = Form.useForm();
useEffect(() => {
fetchSequences();
}, []);
const fetchSequences = async () => {
setLoading(true);
try {
const data = await SequenceGeneratorAPI.getAll();
setSequences(data);
} catch (err) {
setError(err.response?.data?.message || 'Failed to fetch sequences');
} finally {
setLoading(false);
}
};
const handleCreate = () => {
form.resetFields();
setCurrentSequence(null);
setEditingId(null);
setVisible(true);
};
const handleEdit = (record) => {
form.setFieldsValue(record);
setCurrentSequence(record);
setEditingId(record.id);
setVisible(true);
};
const handleDelete = async (id) => {
Modal.confirm({
title: 'Confirm Delete',
content: 'Are you sure you want to delete this sequence?',
okText: 'Delete',
okType: 'danger',
cancelText: 'Cancel',
onOk: async () => {
try {
await SequenceGeneratorAPI.delete(id);
message.success('Sequence deleted successfully');
fetchSequences();
} catch (err) {
message.error(err.response?.data?.message || 'Failed to delete sequence');
}
}
});
};
const handleSubmit = async () => {
try {
const values = await form.validateFields();
if (editingId) {
await SequenceGeneratorAPI.update(editingId, values);
message.success('Sequence updated successfully');
} else {
await SequenceGeneratorAPI.create(values);
message.success('Sequence created successfully');
}
setVisible(false);
fetchSequences();
} catch (err) {
message.error(err.response?.data?.message || 'Operation failed');
}
};
const columns = [
{
title: 'Actions',
key: 'actions',
width: 100,
render: (_, record) => (
| Sequence ID | {currentSequence.id} |
| Demonstration |
{currentSequence.demonstration}
|