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) => ( , onClick: () => handleEdit(record) }, { key: 'delete', label: 'Delete', icon: , danger: true, onClick: () => handleDelete(record.id) } ] }} trigger={['click']} > `Total ${total} sequences`, }} /> Update Sequence Generator} open={visible} onOk={handleSubmit} onCancel={() => setVisible(false)} confirmLoading={loading} width={700} > {currentSequence && (
Sequence ID {currentSequence.id}
Demonstration
{currentSequence.demonstration}
)}
Name*} rules={[{ required: true, message: 'Please input the sequence name!' }]} > Sequence Code} > Prefix*} rules={[{ required: true, message: 'Please input the prefix!' }]} > Suffix} > Separator} > Starting No} > Current No} >
); }; export default SequenceGenerator;