From 908788f41d841e91692d998cec3ee447a7ed1b65 Mon Sep 17 00:00:00 2001 From: vinix Date: Mon, 24 Nov 2025 13:05:33 +0700 Subject: [PATCH] feat: enhance error code management with table display and action buttons --- .../master/brandDevice/AddBrandDevice.jsx | 157 +++++++++++++----- .../master/brandDevice/EditBrandDevice.jsx | 146 +++++++++++----- .../component/ErrorCodeSimpleForm.jsx | 64 +++---- 3 files changed, 239 insertions(+), 128 deletions(-) diff --git a/src/pages/master/brandDevice/AddBrandDevice.jsx b/src/pages/master/brandDevice/AddBrandDevice.jsx index 99670e2..a070744 100644 --- a/src/pages/master/brandDevice/AddBrandDevice.jsx +++ b/src/pages/master/brandDevice/AddBrandDevice.jsx @@ -1,6 +1,19 @@ import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Divider, Typography, Button, Steps, Form, Row, Col, Card, ConfigProvider } from 'antd'; +import { + Divider, + Typography, + Button, + Steps, + Form, + Row, + Col, + Card, + ConfigProvider, + Table, + Tag, + Space, +} from 'antd'; import { NotifAlert, NotifOk } from '../../../components/Global/ToastNotif'; import { useBreadcrumb } from '../../../layout/LayoutBreadcrumb'; import { createBrand } from '../../../api/master-brand'; @@ -11,6 +24,7 @@ import FormActions from './component/FormActions'; import SolutionForm from './component/SolutionForm'; import { useSolutionLogic } from './hooks/solution'; import { uploadFile, getFolderFromFileType } from '../../../api/file-uploads'; +import { EditOutlined, DeleteOutlined, EyeOutlined } from '@ant-design/icons'; const { Title } = Typography; const { Step } = Steps; @@ -39,7 +53,6 @@ const AddBrandDevice = () => { const [formData, setFormData] = useState(defaultData); const [errorCodes, setErrorCodes] = useState([]); const [errorCodeIcon, setErrorCodeIcon] = useState(null); - const [showErrorCodeModal, setShowErrorCodeModal] = useState(false); const { solutionFields, @@ -57,7 +70,6 @@ const AddBrandDevice = () => { setSolutionsForExistingRecord, } = useSolutionLogic(solutionForm); - useEffect(() => { setBreadcrumbItems([ { title: • Master }, @@ -427,7 +439,7 @@ const AddBrandDevice = () => { <> {/* Error Code Form Column */} - +
{ {/* Solution Form Column */} - + {
-
- {/* Error Codes List Button */} - - - + + - - + { + title: 'Sol', + key: 'Sol', + width: '10%', + align: 'center', + render: (_, record) => { + const solutionCount = record.solution + ? record.solution.length + : 0; + return ( + 0 ? 'green' : 'red'} + > + {solutionCount} Sol + + ); + }, + }, + { + title: 'Status', + dataIndex: 'status', + key: 'status', + width: '20%', + align: 'center', + render: (_, { status }) => ( + + {status ? 'Active' : 'Inactive'} + + ), + }, + { + title: 'Action', + key: 'action', + align: 'center', + width: '15%', + render: (_, record) => ( + + + @@ -503,7 +506,7 @@ const EditBrandDevice = () => { : 'Error Code Form' : editingErrorCodeKey ? 'Edit Error Code' - : 'Tambah Error Code'} + : 'Error Code'} } size="small" @@ -526,7 +529,7 @@ const EditBrandDevice = () => { - + @@ -559,49 +562,104 @@ const EditBrandDevice = () => { - - - {/* Error Codes List Button */} - - - + +
- - + { + title: 'Sol', + key: 'Sol', + width: '10%', + align: 'center', + render: (_, record) => { + const solutionCount = record.solution + ? record.solution.length + : 0; + return ( + 0 ? 'green' : 'red'} + > + {solutionCount} Sol + + ); + }, + }, + { + title: 'Status', + dataIndex: 'status', + key: 'status', + width: '20%', + align: 'center', + render: (_, { status }) => ( + + {status ? 'Active' : 'Inactive'} + + ), + }, + { + title: 'Action', + key: 'action', + align: 'center', + width: '15%', + render: (_, record) => ( + + ) : ( -
+
No upload allowed
)} @@ -181,12 +170,7 @@ const ErrorCodeSimpleForm = ({
{!isErrorCodeFormReadOnly && ( - )} @@ -221,7 +205,7 @@ const ErrorCodeSimpleForm = ({ }} style={{ width: '100%' }} > - + Add Error Code + Simpan Error Code @@ -230,4 +214,4 @@ const ErrorCodeSimpleForm = ({ ); }; -export default ErrorCodeSimpleForm; \ No newline at end of file +export default ErrorCodeSimpleForm;