mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-316,317,438): Move Uniformity feature under production
namespace
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import UniformityForm from '@/components/pages/uniformity/form/UniformityForm';
|
import UniformityForm from '@/components/pages/production/uniformity/form/UniformityForm';
|
||||||
|
|
||||||
const AddUniformity = () => {
|
const AddUniformity = () => {
|
||||||
return <UniformityForm formType='add' />;
|
return <UniformityForm formType='add' />;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import UniformityDetail from '@/components/pages/uniformity/detail/UniformityDetail';
|
import UniformityDetail from '@/components/pages/production/uniformity/detail/UniformityDetail';
|
||||||
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
|
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
|
||||||
import { UniformityApi } from '@/services/api/uniformity';
|
import { UniformityApi } from '@/services/api/uniformity';
|
||||||
import { useRouter, useSearchParams } from 'next/navigation';
|
import { useRouter, useSearchParams } from 'next/navigation';
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ReactNode } from 'react';
|
import { ReactNode } from 'react';
|
||||||
import UniformityPageWrapper from '@/components/pages/uniformity/UniformityPageWrapper';
|
import UniformityPageWrapper from '@/components/pages/production/uniformity/UniformityPageWrapper';
|
||||||
|
|
||||||
export default function UniformityLayout({
|
export default function UniformityLayout({
|
||||||
children,
|
children,
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import UniformityTable from '@/components/pages/uniformity/UniformityTable';
|
import UniformityTable from '@/components/pages/production/uniformity/UniformityTable';
|
||||||
|
|
||||||
const Uniformity = () => {
|
const Uniformity = () => {
|
||||||
return <UniformityTable />;
|
return <UniformityTable />;
|
||||||
+4
-4
@@ -1,9 +1,9 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Card from '@/components/Card';
|
import Card from '@/components/Card';
|
||||||
import UniformityBarChart from '@/components/pages/uniformity/chart/UniformityBarChart';
|
import UniformityBarChart from '@/components/pages/production/uniformity/chart/UniformityBarChart';
|
||||||
import UniformityGaugeChart from '@/components/pages/uniformity/chart/UniformityGaugeChart';
|
import UniformityGaugeChart from '@/components/pages/production/uniformity/chart/UniformityGaugeChart';
|
||||||
import UniformityBarChartSkeleton from '@/components/pages/uniformity/skeleton/UniformityBarChartSkeleton';
|
import UniformityBarChartSkeleton from '@/components/pages/production/uniformity/skeleton/UniformityBarChartSkeleton';
|
||||||
import UniformityGaugeChartSkeleton from '@/components/pages/uniformity/skeleton/UniformityGaugeChartSkeleton';
|
import UniformityGaugeChartSkeleton from '@/components/pages/production/uniformity/skeleton/UniformityGaugeChartSkeleton';
|
||||||
|
|
||||||
interface BarChartData {
|
interface BarChartData {
|
||||||
name: string;
|
name: string;
|
||||||
+4
-4
@@ -3,7 +3,7 @@
|
|||||||
import { usePathname, useRouter } from 'next/navigation';
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
import Drawer from '@/components/Drawer';
|
import Drawer from '@/components/Drawer';
|
||||||
import React, { ReactNode } from 'react';
|
import React, { ReactNode } from 'react';
|
||||||
import UniformityTable from '@/components/pages/uniformity/UniformityTable';
|
import UniformityTable from '@/components/pages/production/uniformity/UniformityTable';
|
||||||
import { useUiStore } from '@/stores/ui/ui.store';
|
import { useUiStore } from '@/stores/ui/ui.store';
|
||||||
|
|
||||||
export default function UniformityPageWrapper({
|
export default function UniformityPageWrapper({
|
||||||
@@ -27,7 +27,7 @@ export default function UniformityPageWrapper({
|
|||||||
const handleBackdropClick = () => {
|
const handleBackdropClick = () => {
|
||||||
const unsub = useUiStore.getState().subscribeIsValid((isValid) => {
|
const unsub = useUiStore.getState().subscribeIsValid((isValid) => {
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
router.push('/uniformity');
|
router.push('/production/uniformity');
|
||||||
unsub?.();
|
unsub?.();
|
||||||
setExpandedDrawerOpen(false);
|
setExpandedDrawerOpen(false);
|
||||||
} else {
|
} else {
|
||||||
@@ -42,7 +42,7 @@ export default function UniformityPageWrapper({
|
|||||||
<>
|
<>
|
||||||
<div className='w-full p-4'>
|
<div className='w-full p-4'>
|
||||||
<UniformityTable
|
<UniformityTable
|
||||||
refresh={() => !isOpen && router.push('/uniformity')}
|
refresh={() => !isOpen && router.push('/production/uniformity')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ export default function UniformityPageWrapper({
|
|||||||
open={isOpen}
|
open={isOpen}
|
||||||
setOpen={(v) => {
|
setOpen={(v) => {
|
||||||
if (!v) {
|
if (!v) {
|
||||||
router.push('/uniformity');
|
router.push('/production/uniformity');
|
||||||
setExpandedDrawerOpen(false);
|
setExpandedDrawerOpen(false);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
+19
-25
@@ -7,10 +7,10 @@ import { Icon } from '@iconify/react';
|
|||||||
import { ColumnDef, SortingState } from '@tanstack/react-table';
|
import { ColumnDef, SortingState } from '@tanstack/react-table';
|
||||||
import { cn, formatDate } from '@/lib/helper';
|
import { cn, formatDate } from '@/lib/helper';
|
||||||
import Button from '@/components/Button';
|
import Button from '@/components/Button';
|
||||||
import UniformityChart from '@/components/pages/uniformity/UniformityChart';
|
import UniformityChart from '@/components/pages/production/uniformity/UniformityChart';
|
||||||
import { useTableFilter } from '@/services/hooks/useTableFilter';
|
import { useTableFilter } from '@/services/hooks/useTableFilter';
|
||||||
import { UniformityApi } from '@/services/api/uniformity';
|
import { UniformityApi } from '@/services/api/uniformity';
|
||||||
import { type Uniformity } from '@/types/api/uniformity/uniformity';
|
import { type Uniformity } from '@/types/api/production/uniformity';
|
||||||
import { isResponseSuccess } from '@/lib/api-helper';
|
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';
|
||||||
@@ -20,7 +20,7 @@ import { useModal } from '@/components/Modal';
|
|||||||
import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
import Card from '@/components/Card';
|
import Card from '@/components/Card';
|
||||||
import UniformityTableSkeleton from '@/components/pages/uniformity/skeleton/UniformityTableSkeleton';
|
import UniformityTableSkeleton from '@/components/pages/production/uniformity/skeleton/UniformityTableSkeleton';
|
||||||
import RequirePermission from '@/components/helper/RequirePermission';
|
import RequirePermission from '@/components/helper/RequirePermission';
|
||||||
import { useUniformityStore } from '@/stores/uniformity/uniformity.store';
|
import { useUniformityStore } from '@/stores/uniformity/uniformity.store';
|
||||||
import FloatingActionsButton from '@/components/FloatingActionsButton';
|
import FloatingActionsButton from '@/components/FloatingActionsButton';
|
||||||
@@ -38,20 +38,20 @@ import {
|
|||||||
getStatusColor,
|
getStatusColor,
|
||||||
getStatusIndicatorColor,
|
getStatusIndicatorColor,
|
||||||
getStatusText,
|
getStatusText,
|
||||||
} from '@/components/pages/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { generateUniformityPDF } from '@/components/pages/uniformity/export/UniformityExportPDF';
|
import { generateUniformityPDF } from '@/components/pages/production/uniformity/export/UniformityExportPDF';
|
||||||
import { generateUniformityExcel } from '@/components/pages/uniformity/export/UniformityExportExcel';
|
import { generateUniformityExcel } from '@/components/pages/production/uniformity/export/UniformityExportExcel';
|
||||||
import Dropdown from '@/components/Dropdown';
|
import Dropdown from '@/components/Dropdown';
|
||||||
import Menu from '@/components/menu/Menu';
|
import Menu from '@/components/menu/Menu';
|
||||||
import MenuItem from '@/components/menu/MenuItem';
|
import MenuItem from '@/components/menu/MenuItem';
|
||||||
|
|
||||||
const isUniformityLocked = (uniformity: Uniformity): boolean => {
|
const isUniformityLocked = (uniformity: Uniformity): boolean => {
|
||||||
return (
|
// Uniformity data is never locked - checkbox is always enabled
|
||||||
uniformity.status === 'Disetujui' ||
|
return false;
|
||||||
uniformity.status === 'Ditolak' ||
|
};
|
||||||
uniformity.status === 'APPROVED' ||
|
|
||||||
uniformity.status === 'REJECTED'
|
const canApproveRejectUniformity = (uniformity: Uniformity): boolean => {
|
||||||
);
|
return uniformity.status === 'CREATED' || uniformity.status === 'Pengajuan';
|
||||||
};
|
};
|
||||||
|
|
||||||
interface UniformityPreviewData {
|
interface UniformityPreviewData {
|
||||||
@@ -430,7 +430,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
singleRejectModal.openModal();
|
singleRejectModal.openModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
router.replace('/uniformity', { scroll: false });
|
router.replace('/production/uniformity', { scroll: false });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -671,7 +671,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
const uniformity = uniformities.data.find(
|
const uniformity = uniformities.data.find(
|
||||||
(r) => r.id === parseInt(rowId)
|
(r) => r.id === parseInt(rowId)
|
||||||
);
|
);
|
||||||
if (uniformity && !isUniformityLocked(uniformity)) {
|
if (uniformity) {
|
||||||
newSelection[rowId] = true;
|
newSelection[rowId] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -692,10 +692,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
id: 'select',
|
id: 'select',
|
||||||
header: ({ table }) => {
|
header: ({ table }) => {
|
||||||
const allRows = table.getRowModel().rows;
|
const allRows = table.getRowModel().rows;
|
||||||
const selectableRows = allRows.filter((row) => {
|
const selectableRows = allRows;
|
||||||
const uniformity = row.original;
|
|
||||||
return !isUniformityLocked(uniformity);
|
|
||||||
});
|
|
||||||
|
|
||||||
const hasNoSelectableRows = selectableRows.length === 0;
|
const hasNoSelectableRows = selectableRows.length === 0;
|
||||||
|
|
||||||
@@ -730,17 +727,14 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
const uniformity = row.original;
|
|
||||||
const isDisabled = isUniformityLocked(uniformity);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn({ 'opacity-50': isDisabled })}>
|
<div>
|
||||||
<CheckboxInput
|
<CheckboxInput
|
||||||
name='row'
|
name='row'
|
||||||
checked={row.getIsSelected()}
|
checked={row.getIsSelected()}
|
||||||
indeterminate={row.getIsSomeSelected()}
|
indeterminate={row.getIsSomeSelected()}
|
||||||
onChange={row.getToggleSelectedHandler()}
|
onChange={row.getToggleSelectedHandler()}
|
||||||
disabled={isDisabled}
|
disabled={false}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -805,7 +799,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
<section className='[&_button]:w-full [&_button]:sm:w-fit [&_button]:last:mt-2 [&_button]:last:sm:mt-0 sm:flex sm:justify-between grid grid-cols-1 sm:gap-0 gap-2'>
|
<section className='[&_button]:w-full [&_button]:sm:w-fit [&_button]:last:mt-2 [&_button]:last:sm:mt-0 sm:flex sm:justify-between grid grid-cols-1 sm:gap-0 gap-2'>
|
||||||
<div className='w-full sm:w-fit flex flex-col sm:flex-row self-start gap-2'>
|
<div className='w-full sm:w-fit flex flex-col sm:flex-row self-start gap-2'>
|
||||||
<RequirePermission permissions='lti.production.uniformity.create'>
|
<RequirePermission permissions='lti.production.uniformity.create'>
|
||||||
<Button color='primary' href='/uniformity/add'>
|
<Button color='primary' href='/production/uniformity/add'>
|
||||||
<Icon icon='ic:round-plus' width={18} height={18} />
|
<Icon icon='ic:round-plus' width={18} height={18} />
|
||||||
Add Uniformity
|
Add Uniformity
|
||||||
</Button>
|
</Button>
|
||||||
@@ -1196,7 +1190,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
hidden: selectedRowIds.length !== 1,
|
hidden: selectedRowIds.length !== 1,
|
||||||
onClick() {
|
onClick() {
|
||||||
router.push(
|
router.push(
|
||||||
`/uniformity/detail?uniformityId=${selectedRowIds[0]}`
|
`/production/uniformity/detail?uniformityId=${selectedRowIds[0]}`
|
||||||
);
|
);
|
||||||
setRowSelection({});
|
setRowSelection({});
|
||||||
},
|
},
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import Badge from '@/components/Badge';
|
import Badge from '../../../../Badge';
|
||||||
import Card from '@/components/Card';
|
import Card from '@/components/Card';
|
||||||
import { Icon } from '@iconify/react';
|
import { Icon } from '@iconify/react';
|
||||||
import { formatNumber } from '@/lib/helper';
|
import { formatNumber } from '@/lib/helper';
|
||||||
+7
-7
@@ -10,16 +10,16 @@ import Table from '@/components/Table';
|
|||||||
import Badge from '@/components/Badge';
|
import Badge from '@/components/Badge';
|
||||||
import Tooltip from '@/components/Tooltip';
|
import Tooltip from '@/components/Tooltip';
|
||||||
import RequirePermission from '@/components/helper/RequirePermission';
|
import RequirePermission from '@/components/helper/RequirePermission';
|
||||||
import { UniformityDetail as UniformityDetailType } from '@/types/api/uniformity/uniformity';
|
import { UniformityDetail as UniformityDetailType } from '@/types/api/production/uniformity';
|
||||||
import { formatDate } from '@/lib/helper';
|
import { formatDate } from '@/lib/helper';
|
||||||
import { useUiStore } from '@/stores/ui/ui.store';
|
import { useUiStore } from '@/stores/ui/ui.store';
|
||||||
import UniformityDetailsPreview from '@/components/pages/uniformity/detail/UniformityDetailsPreview';
|
import UniformityDetailsPreview from '@/components/pages/production/uniformity/detail/UniformityDetailsPreview';
|
||||||
import {
|
import {
|
||||||
getStatusColor,
|
getStatusColor,
|
||||||
getStatusIndicatorColor,
|
getStatusIndicatorColor,
|
||||||
getStatusText,
|
getStatusText,
|
||||||
} from '@/components/pages/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { DetailOptionType } from '@/types/api/uniformity/uniformity';
|
import { DetailOptionType } from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
interface UniformityDetailProps {
|
interface UniformityDetailProps {
|
||||||
initialValues: UniformityDetailType;
|
initialValues: UniformityDetailType;
|
||||||
@@ -35,11 +35,11 @@ const UniformityDetail: React.FC<UniformityDetailProps> = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const handleApprove = () => {
|
const handleApprove = () => {
|
||||||
router.push(`/uniformity?action=approve&id=${initialValues.id}`);
|
router.push(`/production/uniformity?action=approve&id=${initialValues.id}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleReject = () => {
|
const handleReject = () => {
|
||||||
router.push(`/uniformity?action=reject&id=${initialValues.id}`);
|
router.push(`/production/uniformity?action=reject&id=${initialValues.id}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleViewUniformityDetails = () => {
|
const handleViewUniformityDetails = () => {
|
||||||
@@ -175,7 +175,7 @@ const UniformityDetail: React.FC<UniformityDetailProps> = ({
|
|||||||
<section className='w-full h-full bg-white border-l border-gray-200'>
|
<section className='w-full h-full bg-white border-l border-gray-200'>
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<DrawerHeader
|
<DrawerHeader
|
||||||
leftIconHref='/uniformity'
|
leftIconHref='/production/uniformity'
|
||||||
subtitle={`Details`}
|
subtitle={`Details`}
|
||||||
subtitleClassName='text-sm text-neutral'
|
subtitleClassName='text-sm text-neutral'
|
||||||
showDivider
|
showDivider
|
||||||
+4
-4
@@ -10,17 +10,17 @@ import {
|
|||||||
UniformitySampling,
|
UniformitySampling,
|
||||||
UniformityResult,
|
UniformityResult,
|
||||||
UniformityInfoUmum,
|
UniformityInfoUmum,
|
||||||
} from '@/types/api/uniformity/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
import Table from '@/components/Table';
|
import Table from '@/components/Table';
|
||||||
import Badge from '@/components/Badge';
|
import Badge from '@/components/Badge';
|
||||||
import { formatNumber } from '@/lib/helper';
|
import { formatNumber } from '@/lib/helper';
|
||||||
import { DetailOptionType } from '@/types/api/uniformity/uniformity';
|
import { DetailOptionType } from '@/types/api/production/uniformity';
|
||||||
import {
|
import {
|
||||||
getWeightStatusColor,
|
getWeightStatusColor,
|
||||||
getWeightStatusIndicatorColor,
|
getWeightStatusIndicatorColor,
|
||||||
getWeightStatusText,
|
getWeightStatusText,
|
||||||
} from '@/components/pages/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { BodyWeightData } from '@/types/api/uniformity/uniformity';
|
import { BodyWeightData } from '@/types/api/production/uniformity';
|
||||||
import Button from '@/components/Button';
|
import Button from '@/components/Button';
|
||||||
import { UniformityApi } from '@/services/api/uniformity';
|
import { UniformityApi } from '@/services/api/uniformity';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as XLSX from 'xlsx';
|
import * as XLSX from 'xlsx';
|
||||||
import type { Uniformity } from '@/types/api/uniformity/uniformity';
|
import type { Uniformity } from '@/types/api/production/uniformity';
|
||||||
import { formatDate, formatNumber } from '@/lib/helper';
|
import { formatDate, formatNumber } from '@/lib/helper';
|
||||||
|
|
||||||
interface UniformityExportExcelParams {
|
interface UniformityExportExcelParams {
|
||||||
+1
-1
@@ -11,7 +11,7 @@ import {
|
|||||||
} from '@react-pdf/renderer';
|
} from '@react-pdf/renderer';
|
||||||
|
|
||||||
import { formatDate, formatNumber } from '@/lib/helper';
|
import { formatDate, formatNumber } from '@/lib/helper';
|
||||||
import type { Uniformity } from '@/types/api/uniformity/uniformity';
|
import type { Uniformity } from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
Font.register({
|
Font.register({
|
||||||
family: 'Helvetica',
|
family: 'Helvetica',
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import * as Yup from 'yup';
|
import * as Yup from 'yup';
|
||||||
import { Uniformity } from '@/types/api/uniformity/uniformity';
|
import { Uniformity } from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
type UniformityFormSchemaType = {
|
type UniformityFormSchemaType = {
|
||||||
date: string;
|
date: string;
|
||||||
+9
-7
@@ -23,7 +23,7 @@ import {
|
|||||||
UniformityFormSchema,
|
UniformityFormSchema,
|
||||||
UniformityFormValues,
|
UniformityFormValues,
|
||||||
getUniformityFormInitialValues,
|
getUniformityFormInitialValues,
|
||||||
} from '@/components/pages/uniformity/form/UniformityForm.schema';
|
} from '@/components/pages/production/uniformity/form/UniformityForm.schema';
|
||||||
import { LocationApi } from '@/services/api/master-data';
|
import { LocationApi } from '@/services/api/master-data';
|
||||||
import {
|
import {
|
||||||
ProjectFlockApi,
|
ProjectFlockApi,
|
||||||
@@ -34,13 +34,13 @@ import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
|
|||||||
import {
|
import {
|
||||||
Uniformity,
|
Uniformity,
|
||||||
VerifyUniformityPayload,
|
VerifyUniformityPayload,
|
||||||
} from '@/types/api/uniformity/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
import { type BaseApiResponse } from '@/types/api/api-general';
|
import { type BaseApiResponse } from '@/types/api/api-general';
|
||||||
import { ProjectFlockKandangLookup } from '@/types/api/production/project-flock';
|
import { ProjectFlockKandangLookup } from '@/types/api/production/project-flock';
|
||||||
import { Kandang } from '@/types/api/master-data/kandang';
|
import { Kandang } from '@/types/api/master-data/kandang';
|
||||||
import UniformityPreviewForm from '@/components/pages/uniformity/form/UniformityPreviewForm';
|
import UniformityPreviewForm from '@/components/pages/production/uniformity/form/UniformityPreviewForm';
|
||||||
import UniformityResultForm from '@/components/pages/uniformity/form/UniformityResultForm';
|
import UniformityResultForm from '@/components/pages/production/uniformity/form/UniformityResultForm';
|
||||||
import { generateUniformityTemplate } from '@/components/pages/uniformity/export/UniformityTemplate';
|
import { generateUniformityTemplate } from '@/components/pages/production/uniformity/export/UniformityTemplate';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
import { cn, formatNumber } from '@/lib/helper';
|
import { cn, formatNumber } from '@/lib/helper';
|
||||||
import Tooltip from '@/components/Tooltip';
|
import Tooltip from '@/components/Tooltip';
|
||||||
@@ -272,7 +272,7 @@ const UniformityForm = ({
|
|||||||
setExpandedDrawerOpen(true);
|
setExpandedDrawerOpen(true);
|
||||||
setUniformityStep('preview');
|
setUniformityStep('preview');
|
||||||
} else {
|
} else {
|
||||||
router.push('/uniformity');
|
router.push('/production/uniformity');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -435,7 +435,9 @@ const UniformityForm = ({
|
|||||||
leftIcon={formType == 'add' ? 'mdi:close' : 'mdi:arrow-left'}
|
leftIcon={formType == 'add' ? 'mdi:close' : 'mdi:arrow-left'}
|
||||||
leftIconSize={24}
|
leftIconSize={24}
|
||||||
leftIconHref={
|
leftIconHref={
|
||||||
formType == 'add' ? '/uniformity' : `/uniformity/detail`
|
formType == 'add'
|
||||||
|
? '/production/uniformity'
|
||||||
|
: `/production/uniformity/detail`
|
||||||
}
|
}
|
||||||
leftIconClassName='hover:text-gray-400'
|
leftIconClassName='hover:text-gray-400'
|
||||||
subtitle={formType == 'add' ? 'Add Uniformity' : 'Update Uniformity'}
|
subtitle={formType == 'add' ? 'Add Uniformity' : 'Update Uniformity'}
|
||||||
+1
-1
@@ -13,7 +13,7 @@ import Table from '@/components/Table';
|
|||||||
import {
|
import {
|
||||||
BodyWeightData,
|
BodyWeightData,
|
||||||
UniformityDetailItem,
|
UniformityDetailItem,
|
||||||
} from '@/types/api/uniformity/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
const UniformityPreviewForm = () => {
|
const UniformityPreviewForm = () => {
|
||||||
const setExpandedDrawerOpen = useUiStore((s) => s.setExpandedDrawerOpen);
|
const setExpandedDrawerOpen = useUiStore((s) => s.setExpandedDrawerOpen);
|
||||||
+4
-4
@@ -20,12 +20,12 @@ import {
|
|||||||
getWeightStatusColor,
|
getWeightStatusColor,
|
||||||
getWeightStatusIndicatorColor,
|
getWeightStatusIndicatorColor,
|
||||||
getWeightStatusText,
|
getWeightStatusText,
|
||||||
} from '@/components/pages/uniformity/uniformity-utils';
|
} from '@/components/pages/production/uniformity/uniformity-utils';
|
||||||
import { DetailOptionType } from '@/types/api/uniformity/uniformity';
|
import { DetailOptionType } from '@/types/api/production/uniformity';
|
||||||
import {
|
import {
|
||||||
BodyWeightData,
|
BodyWeightData,
|
||||||
UniformityDetailItem,
|
UniformityDetailItem,
|
||||||
} from '@/types/api/uniformity/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
const UniformityResultForm = () => {
|
const UniformityResultForm = () => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -82,7 +82,7 @@ const UniformityResultForm = () => {
|
|||||||
setIsNextStep(false);
|
setIsNextStep(false);
|
||||||
setUniformityStep('preview');
|
setUniformityStep('preview');
|
||||||
setVerifyUniformityResult(null);
|
setVerifyUniformityResult(null);
|
||||||
router.push('/uniformity');
|
router.push('/production/uniformity');
|
||||||
} finally {
|
} finally {
|
||||||
setIsSubmitting(false);
|
setIsSubmitting(false);
|
||||||
}
|
}
|
||||||
@@ -29,6 +29,11 @@ export const MAIN_DRAWER_LINKS: SidebarMenuItem[] = [
|
|||||||
text: 'Transfer to Laying',
|
text: 'Transfer to Laying',
|
||||||
link: '/production/transfer-to-laying',
|
link: '/production/transfer-to-laying',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: 'Uniformity',
|
||||||
|
link: '/production/uniformity',
|
||||||
|
permission: ['lti.production.uniformity.list'],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -42,12 +47,6 @@ export const MAIN_DRAWER_LINKS: SidebarMenuItem[] = [
|
|||||||
link: '/marketing',
|
link: '/marketing',
|
||||||
icon: 'heroicons-outline:currency-dollar',
|
icon: 'heroicons-outline:currency-dollar',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
text: 'Uniformity',
|
|
||||||
link: '/uniformity',
|
|
||||||
icon: 'heroicons-outline:scale',
|
|
||||||
permission: ['lti.production.uniformity.list'],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: 'Keuangan',
|
text: 'Keuangan',
|
||||||
link: '/finance',
|
link: '/finance',
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ export const ROUTE_PERMISSIONS: Record<string, string[]> = {
|
|||||||
],
|
],
|
||||||
|
|
||||||
// Production - Uniformity
|
// Production - Uniformity
|
||||||
'/uniformity/': ['lti.production.uniformity.list'],
|
'/production/uniformity/': ['lti.production.uniformity.list'],
|
||||||
'/uniformity/add/': ['lti.production.uniformity.create'],
|
'/production/uniformity/add/': ['lti.production.uniformity.create'],
|
||||||
'/uniformity/detail/': ['lti.production.uniformity.detail'],
|
'/production/uniformity/detail/': ['lti.production.uniformity.detail'],
|
||||||
'/uniformity/detail/edit/': ['lti.production.uniformity.update'],
|
'/production/uniformity/detail/edit/': ['lti.production.uniformity.update'],
|
||||||
|
|
||||||
// Purchase
|
// Purchase
|
||||||
'/purchase/': ['lti.purchase.list'],
|
'/purchase/': ['lti.purchase.list'],
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
VerifyUniformityPayload,
|
VerifyUniformityPayload,
|
||||||
VerifyUniformityResponse,
|
VerifyUniformityResponse,
|
||||||
CreateUniformityPayload,
|
CreateUniformityPayload,
|
||||||
} from '@/types/api/uniformity/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
export class UniformityApiService extends BaseApiService<
|
export class UniformityApiService extends BaseApiService<
|
||||||
Uniformity,
|
Uniformity,
|
||||||
|
|||||||
Vendored
+1
-1
@@ -3,7 +3,7 @@ import type {
|
|||||||
UniformityFormData,
|
UniformityFormData,
|
||||||
UniformityDetail,
|
UniformityDetail,
|
||||||
VerifyUniformityResponse,
|
VerifyUniformityResponse,
|
||||||
} from '@/types/api/uniformity/uniformity';
|
} from '@/types/api/production/uniformity';
|
||||||
|
|
||||||
type MainUiSlice = {
|
type MainUiSlice = {
|
||||||
mainDrawerOpen: boolean;
|
mainDrawerOpen: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user