mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-25 07:45:47 +00:00
refactor(FE): Replace Badge with StatusBadge in uniformity views
This commit is contained in:
@@ -19,6 +19,7 @@ import { isResponseSuccess } from '@/lib/api-helper';
|
|||||||
import { type BaseApiResponse } from '@/types/api/api-general';
|
import { type BaseApiResponse } from '@/types/api/api-general';
|
||||||
import Table from '@/components/Table';
|
import Table from '@/components/Table';
|
||||||
import Badge from '@/components/Badge';
|
import Badge from '@/components/Badge';
|
||||||
|
import StatusBadge from '@/components/helper/StatusBadge';
|
||||||
import CheckboxInput from '@/components/input/CheckboxInput';
|
import CheckboxInput from '@/components/input/CheckboxInput';
|
||||||
import { useModal } from '@/components/Modal';
|
import { useModal } from '@/components/Modal';
|
||||||
import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
||||||
@@ -45,6 +46,7 @@ import {
|
|||||||
getStatusColor,
|
getStatusColor,
|
||||||
getStatusIndicatorColor,
|
getStatusIndicatorColor,
|
||||||
getStatusText,
|
getStatusText,
|
||||||
|
getStatusBadgeColor,
|
||||||
} from '@/components/pages/production/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { generateUniformityPDF } from '@/components/pages/production/uniformity/export/UniformityExportPDF';
|
import { generateUniformityPDF } from '@/components/pages/production/uniformity/export/UniformityExportPDF';
|
||||||
import { generateUniformityExcel } from '@/components/pages/production/uniformity/export/UniformityExportExcel';
|
import { generateUniformityExcel } from '@/components/pages/production/uniformity/export/UniformityExportExcel';
|
||||||
@@ -832,7 +834,7 @@ const UniformityTable = () => {
|
|||||||
},
|
},
|
||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className='w-full flex flex-row justify-center'>
|
||||||
<CheckboxInput
|
<CheckboxInput
|
||||||
name='row'
|
name='row'
|
||||||
checked={row.getIsSelected()}
|
checked={row.getIsSelected()}
|
||||||
@@ -862,8 +864,11 @@ const UniformityTable = () => {
|
|||||||
{
|
{
|
||||||
accessorKey: 'week',
|
accessorKey: 'week',
|
||||||
header: 'Tanggal (Week)',
|
header: 'Tanggal (Week)',
|
||||||
cell: (props) =>
|
cell: (props) => (
|
||||||
`${formatDate(props.row.original.applied_at, 'DD MMM YYYY')} (${props.row.original.week})`,
|
<span className='text-nowrap'>
|
||||||
|
{`${formatDate(props.row.original.applied_at, 'DD MMM YYYY')} (${props.row.original.week})`}
|
||||||
|
</span>
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
accessorKey: 'status',
|
accessorKey: 'status',
|
||||||
@@ -872,20 +877,11 @@ const UniformityTable = () => {
|
|||||||
const uniformity = props.row.original;
|
const uniformity = props.row.original;
|
||||||
const status =
|
const status =
|
||||||
uniformity.latest_approval?.action ?? uniformity.status;
|
uniformity.latest_approval?.action ?? uniformity.status;
|
||||||
return (
|
|
||||||
<div className='w-full'>
|
const badgeColor = getStatusBadgeColor(status);
|
||||||
<Badge
|
const statusText = getStatusText(status);
|
||||||
statusIndicator={true}
|
|
||||||
variant='soft'
|
return <StatusBadge color={badgeColor} text={statusText} />;
|
||||||
className={{
|
|
||||||
badge: `rounded-xl w-full justify-start border border-gray-200 text-black ${getStatusColor(status)}`,
|
|
||||||
status: getStatusIndicatorColor(status),
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{getStatusText(status)}
|
|
||||||
</Badge>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1039,7 +1035,6 @@ const UniformityTable = () => {
|
|||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section className='p-3 pt-0'>
|
|
||||||
<Table<Uniformity>
|
<Table<Uniformity>
|
||||||
data={isResponseSuccess(uniformities) ? uniformities?.data : []}
|
data={isResponseSuccess(uniformities) ? uniformities?.data : []}
|
||||||
columns={uniformityColumns}
|
columns={uniformityColumns}
|
||||||
@@ -1057,19 +1052,12 @@ const UniformityTable = () => {
|
|||||||
rowSelection={rowSelection}
|
rowSelection={rowSelection}
|
||||||
setRowSelection={setRowSelection}
|
setRowSelection={setRowSelection}
|
||||||
className={{
|
className={{
|
||||||
containerClassName: cn({
|
containerClassName: cn('p-3 pt-0', {
|
||||||
'mb-20':
|
'mb-20':
|
||||||
isResponseSuccess(uniformities) &&
|
isResponseSuccess(uniformities) &&
|
||||||
uniformities?.data?.length === 0,
|
uniformities?.data?.length === 0,
|
||||||
}),
|
}),
|
||||||
tableWrapperClassName: 'overflow-x-auto min-h-full rounded-xl',
|
headerColumnClassName: 'text-nowrap',
|
||||||
tableClassName: 'font-inter w-full table-auto min-h-full!',
|
|
||||||
headerRowClassName: 'border-b border-b-gray-200',
|
|
||||||
headerColumnClassName:
|
|
||||||
'px-6 py-3 text-xs font-semibold text-gray-500 last:flex last:flex-row last:justify-end',
|
|
||||||
bodyRowClassName: 'border-b border-b-gray-200',
|
|
||||||
bodyColumnClassName:
|
|
||||||
'px-6 py-3 last:flex last:flex-row last:justify-end',
|
|
||||||
}}
|
}}
|
||||||
emptyContent={<UniformityTableSkeleton />}
|
emptyContent={<UniformityTableSkeleton />}
|
||||||
/>
|
/>
|
||||||
@@ -1384,10 +1372,7 @@ const UniformityTable = () => {
|
|||||||
{/* Error List Alert */}
|
{/* Error List Alert */}
|
||||||
{formErrorList.length > 0 && (
|
{formErrorList.length > 0 && (
|
||||||
<div className='w-full px-4'>
|
<div className='w-full px-4'>
|
||||||
<AlertErrorList
|
<AlertErrorList formErrorList={formErrorList} onClose={close} />
|
||||||
formErrorList={formErrorList}
|
|
||||||
onClose={close}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -1457,7 +1442,6 @@ const UniformityTable = () => {
|
|||||||
selectedRowIds={selectedRowIds}
|
selectedRowIds={selectedRowIds}
|
||||||
onClose={handleCloseFab}
|
onClose={handleCloseFab}
|
||||||
/>
|
/>
|
||||||
</section>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ import {
|
|||||||
UniformityInfoUmum,
|
UniformityInfoUmum,
|
||||||
} from '@/types/api/production/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
import Table from '@/components/Table';
|
import Table from '@/components/Table';
|
||||||
import Badge from '@/components/Badge';
|
import StatusBadge from '@/components/helper/StatusBadge';
|
||||||
import {
|
import {
|
||||||
getWeightStatusColor,
|
|
||||||
getWeightStatusIndicatorColor,
|
|
||||||
getWeightStatusText,
|
getWeightStatusText,
|
||||||
|
getWeightStatusBadgeColor,
|
||||||
} from '@/components/pages/production/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { BodyWeightData } from '@/types/api/production/uniformity';
|
import { BodyWeightData } from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
@@ -65,30 +64,12 @@ const UniformityDetailsPreview = ({
|
|||||||
cell: (props) => {
|
cell: (props) => {
|
||||||
const status = props.row.original.status;
|
const status = props.row.original.status;
|
||||||
return status ? (
|
return status ? (
|
||||||
<div className='w-full'>
|
<StatusBadge
|
||||||
<Badge
|
color={getWeightStatusBadgeColor(status)}
|
||||||
statusIndicator={true}
|
text={getWeightStatusText(status)}
|
||||||
variant='soft'
|
/>
|
||||||
className={{
|
|
||||||
badge: `rounded-xl w-full justify-start border border-gray-200 text-black ${getWeightStatusColor(status)}`,
|
|
||||||
status: getWeightStatusIndicatorColor(status),
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{getWeightStatusText(status)}
|
|
||||||
</Badge>
|
|
||||||
</div>
|
|
||||||
) : (
|
) : (
|
||||||
<Badge
|
<StatusBadge color='info' text='Unknown' />
|
||||||
statusIndicator={true}
|
|
||||||
variant='soft'
|
|
||||||
className={{
|
|
||||||
badge:
|
|
||||||
'rounded-xl w-full justify-start border border-gray-200 text-black bg-info/10',
|
|
||||||
status: 'bg-info',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Unknown
|
|
||||||
</Badge>
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,12 +14,11 @@ import { useRouter } from 'next/navigation';
|
|||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
import { UniformityApi } from '@/services/api/uniformity';
|
import { UniformityApi } from '@/services/api/uniformity';
|
||||||
import { isResponseError } from '@/lib/api-helper';
|
import { isResponseError } from '@/lib/api-helper';
|
||||||
import Badge from '@/components/Badge';
|
import StatusBadge from '@/components/helper/StatusBadge';
|
||||||
import { formatNumber } from '@/lib/helper';
|
import { formatNumber } from '@/lib/helper';
|
||||||
import {
|
import {
|
||||||
getWeightStatusColor,
|
|
||||||
getWeightStatusIndicatorColor,
|
|
||||||
getWeightStatusText,
|
getWeightStatusText,
|
||||||
|
getWeightStatusBadgeColor,
|
||||||
} from '@/components/pages/production/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { DetailOptionType } from '@/types/api/production/uniformity';
|
import { DetailOptionType } from '@/types/api/production/uniformity';
|
||||||
import {
|
import {
|
||||||
@@ -204,30 +203,12 @@ const UniformityResultForm = () => {
|
|||||||
cell: (props) => {
|
cell: (props) => {
|
||||||
const status = props.row.original.status;
|
const status = props.row.original.status;
|
||||||
return status ? (
|
return status ? (
|
||||||
<div className='w-full'>
|
<StatusBadge
|
||||||
<Badge
|
color={getWeightStatusBadgeColor(status)}
|
||||||
statusIndicator={true}
|
text={getWeightStatusText(status)}
|
||||||
variant='soft'
|
/>
|
||||||
className={{
|
|
||||||
badge: `rounded-xl w-full justify-start border border-gray-200 text-black ${getWeightStatusColor(status)}`,
|
|
||||||
status: getWeightStatusIndicatorColor(status),
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{getWeightStatusText(status)}
|
|
||||||
</Badge>
|
|
||||||
</div>
|
|
||||||
) : (
|
) : (
|
||||||
<Badge
|
<StatusBadge color='info' text='Unknown' />
|
||||||
statusIndicator={true}
|
|
||||||
variant='soft'
|
|
||||||
className={{
|
|
||||||
badge:
|
|
||||||
'rounded-xl w-full justify-start border border-gray-200 text-black bg-info/10',
|
|
||||||
status: 'bg-info',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Unknown
|
|
||||||
</Badge>
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user