refactor plant section
This commit is contained in:
@@ -2,12 +2,15 @@ import { SendRequest } from '../components/Global/ApiRequest';
|
|||||||
|
|
||||||
const getAllPlantSection = async (queryParams) => {
|
const getAllPlantSection = async (queryParams) => {
|
||||||
try {
|
try {
|
||||||
|
// Ensure queryParams is URLSearchParams object
|
||||||
|
const params = queryParams instanceof URLSearchParams ? queryParams : new URLSearchParams(queryParams);
|
||||||
|
|
||||||
const response = await SendRequest({
|
const response = await SendRequest({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
prefix: `plant-sub-section?${queryParams.toString()}`,
|
prefix: `plant-sub-section?${params.toString()}`,
|
||||||
});
|
});
|
||||||
console.log('getAllPlantSection response:', response);
|
console.log('getAllPlantSection response:', response);
|
||||||
console.log('Query params:', queryParams.toString());
|
console.log('Query params:', params.toString());
|
||||||
|
|
||||||
// Backend response structure:
|
// Backend response structure:
|
||||||
// {
|
// {
|
||||||
@@ -23,17 +26,23 @@ const getAllPlantSection = async (queryParams) => {
|
|||||||
|
|
||||||
// Check if backend returns paginated data
|
// Check if backend returns paginated data
|
||||||
if (response.paging) {
|
if (response.paging) {
|
||||||
const totalData = response.data?.[0]?.total_data || response.rows || response.data?.length || 0;
|
// Extract total_data from first record, or fallback to total_limit or rows
|
||||||
|
const totalData = response.data?.[0]?.total_data || response.paging.total_limit || response.rows || response.data?.length || 0;
|
||||||
|
|
||||||
|
// Use total_limit as total count, handle 0 values for page/limit
|
||||||
|
const currentPage = response.paging.current_page || 1;
|
||||||
|
const currentLimit = response.paging.current_limit || 10;
|
||||||
|
const totalPages = response.paging.total_page || Math.ceil(totalData / currentLimit);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
status: response.statusCode || 200,
|
status: response.statusCode || 200,
|
||||||
data: {
|
data: {
|
||||||
data: response.data || [],
|
data: response.data || [],
|
||||||
paging: {
|
paging: {
|
||||||
page: response.paging.current_page || 1,
|
page: currentPage,
|
||||||
limit: response.paging.current_limit || 10,
|
limit: currentLimit,
|
||||||
total: totalData,
|
total: totalData,
|
||||||
page_total: response.paging.total_page || Math.ceil(totalData / (response.paging.current_limit || 10))
|
page_total: totalPages
|
||||||
},
|
},
|
||||||
total: totalData
|
total: totalData
|
||||||
}
|
}
|
||||||
@@ -41,9 +50,9 @@ const getAllPlantSection = async (queryParams) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fallback: If backend returns all data without pagination (old behavior)
|
// Fallback: If backend returns all data without pagination (old behavior)
|
||||||
const params = Object.fromEntries(queryParams);
|
const parsedParams = Object.fromEntries(params);
|
||||||
const currentPage = parseInt(params.page) || 1;
|
const currentPage = parseInt(parsedParams.page) || 1;
|
||||||
const currentLimit = parseInt(params.limit) || 10;
|
const currentLimit = parseInt(parsedParams.limit) || 10;
|
||||||
|
|
||||||
const allData = response.data || [];
|
const allData = response.data || [];
|
||||||
const totalData = allData.length;
|
const totalData = allData.length;
|
||||||
|
|||||||
@@ -64,39 +64,7 @@ const DetailPlantSection = ({ visible, onCancel, onOk, form, editingKey, readOnl
|
|||||||
rules={[{ required: true, message: 'Silakan masukkan nama sub section!' }]}
|
rules={[{ required: true, message: 'Silakan masukkan nama sub section!' }]}
|
||||||
style={{ marginBottom: 0 }}
|
style={{ marginBottom: 0 }}
|
||||||
>
|
>
|
||||||
<Input readOnly={readOnly} placeholder="Masukkan Kode Plant" />
|
<Input readOnly={readOnly} placeholder="Masukkan Nama Sub Section" />
|
||||||
</Form.Item>
|
|
||||||
</div>
|
|
||||||
<div style={{ marginBottom: 12 }}>
|
|
||||||
<Text strong>Nama Plant</Text>
|
|
||||||
<Text style={{ color: 'red' }}> *</Text>
|
|
||||||
<Form.Item
|
|
||||||
name="nama_plant"
|
|
||||||
rules={[{ required: true, message: 'Silakan masukkan nama plant!' }]}
|
|
||||||
style={{ marginBottom: 0 }}
|
|
||||||
>
|
|
||||||
<Input readOnly={readOnly} placeholder="Masukkan Nama Plant" />
|
|
||||||
</Form.Item>
|
|
||||||
</div>
|
|
||||||
<div style={{ marginBottom: 12 }}>
|
|
||||||
<Text strong>Lokasi Plant</Text>
|
|
||||||
<Text style={{ color: 'red' }}> *</Text>
|
|
||||||
<Form.Item
|
|
||||||
name="lokasi_plant"
|
|
||||||
rules={[{ required: true, message: 'Silakan masukkan lokasi plant!' }]}
|
|
||||||
style={{ marginBottom: 0 }}
|
|
||||||
>
|
|
||||||
<Input readOnly={readOnly} placeholder="Masukkan Lokasi Plant" />
|
|
||||||
</Form.Item>
|
|
||||||
</div>
|
|
||||||
<div style={{ marginBottom: 12 }}>
|
|
||||||
<Text strong>Deskripsi</Text>
|
|
||||||
<Form.Item name="deskripsi" style={{ marginBottom: 0 }}>
|
|
||||||
<Input.TextArea
|
|
||||||
readOnly={readOnly}
|
|
||||||
placeholder="Masukkan Deskripsi (Opsional)"
|
|
||||||
rows={4}
|
|
||||||
/>
|
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
|
|||||||
@@ -26,38 +26,26 @@ const ListPlantSection = ({
|
|||||||
title: 'No',
|
title: 'No',
|
||||||
dataIndex: 'sub_section_id',
|
dataIndex: 'sub_section_id',
|
||||||
key: 'sub_section_id',
|
key: 'sub_section_id',
|
||||||
width: '10%',
|
width: '8%',
|
||||||
render: (text, record, index) => index + 1,
|
render: (text, record, index) => index + 1,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'Kode Sub Section',
|
||||||
|
dataIndex: 'sub_section_code',
|
||||||
|
key: 'sub_section_code',
|
||||||
|
width: '20%',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'Nama Sub Section',
|
title: 'Nama Sub Section',
|
||||||
dataIndex: 'sub_section_name',
|
dataIndex: 'sub_section_name',
|
||||||
key: 'sub_section_name',
|
key: 'sub_section_name',
|
||||||
|
width: '35%',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: 'Kode Plant',
|
|
||||||
dataIndex: 'kode_plant',
|
|
||||||
key: 'kode_plant',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Nama Plant',
|
|
||||||
dataIndex: 'nama_plant',
|
|
||||||
key: 'nama_plant',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Lokasi Plant',
|
|
||||||
dataIndex: 'lokasi_plant',
|
|
||||||
key: 'lokasi_plant',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Deskripsi',
|
|
||||||
dataIndex: 'deskripsi',
|
|
||||||
key: 'deskripsi',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: 'Aksi',
|
title: 'Aksi',
|
||||||
key: 'action',
|
key: 'action',
|
||||||
width: '15%',
|
width: '10%',
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Space size="middle">
|
<Space size="middle">
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
Reference in New Issue
Block a user