mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-114): update input handling for vaccination stock, mortality count, and feed stock with improved parsing and formatting
This commit is contained in:
@@ -511,7 +511,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
|
|
||||||
const handleVaccinationStockChangeWrapper = useCallback(
|
const handleVaccinationStockChangeWrapper = useCallback(
|
||||||
(idx: number) => (e: React.ChangeEvent<HTMLInputElement>) => {
|
(idx: number) => (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
const value = parseFloat(e.target.value.replace(/[^\d,.-]/g, '').replace(/,/g, '')) || 0;
|
const value = parseInt(e.target.value.replace(/[^\d.-]/g, '')) || 0;
|
||||||
formik.setFieldValue(`vaccination.${idx}.used_stock`, value);
|
formik.setFieldValue(`vaccination.${idx}.used_stock`, value);
|
||||||
},
|
},
|
||||||
[formik]
|
[formik]
|
||||||
@@ -519,7 +519,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
|
|
||||||
const handleMortalityCountChangeWrapper = useCallback(
|
const handleMortalityCountChangeWrapper = useCallback(
|
||||||
(idx: number) => (e: React.ChangeEvent<HTMLInputElement>) => {
|
(idx: number) => (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
const value = parseFloat(e.target.value.replace(/[^\d,.-]/g, '').replace(/,/g, '')) || 0;
|
const value = parseInt(e.target.value.replace(/[^\d.-]/g, '')) || 0;
|
||||||
formik.setFieldValue(`mortality.${idx}.count`, value);
|
formik.setFieldValue(`mortality.${idx}.count`, value);
|
||||||
},
|
},
|
||||||
[formik]
|
[formik]
|
||||||
@@ -596,6 +596,14 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
setSelectedMortality([]);
|
setSelectedMortality([]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleFeedStockChangeWrapper = useCallback(
|
||||||
|
(idx: number) => (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const value = parseInt(e.target.value.replace(/[^\d.-]/g, '')) || 0;
|
||||||
|
formik.setFieldValue(`feed_data.${idx}.feed_stock`, value);
|
||||||
|
},
|
||||||
|
[formik]
|
||||||
|
);
|
||||||
|
|
||||||
// HELPER FUNCTIONS
|
// HELPER FUNCTIONS
|
||||||
const isRepeaterInputError = <
|
const isRepeaterInputError = <
|
||||||
T extends 'feed_data' | 'body_weight' | 'vaccination' | 'mortality',
|
T extends 'feed_data' | 'body_weight' | 'vaccination' | 'mortality',
|
||||||
@@ -916,7 +924,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
value={
|
value={
|
||||||
feed.feed_qty === '' || feed.feed_qty === undefined
|
feed.feed_qty === '' || feed.feed_qty === undefined
|
||||||
? ''
|
? ''
|
||||||
: String(feed.feed_qty)
|
: Number(feed.feed_qty).toLocaleString('en-US')
|
||||||
}
|
}
|
||||||
onChange={formik.handleChange}
|
onChange={formik.handleChange}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={formik.handleBlur}
|
||||||
@@ -932,11 +940,13 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
required
|
required
|
||||||
name={`feed_data.${idx}.feed_stock`}
|
name={`feed_data.${idx}.feed_stock`}
|
||||||
value={feed.feed_stock}
|
value={feed.feed_stock}
|
||||||
onChange={formik.handleChange}
|
onChange={handleFeedStockChangeWrapper(idx)}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={formik.handleBlur}
|
||||||
maskType='number'
|
maskType='number'
|
||||||
decimals={0}
|
decimals={0}
|
||||||
min={0}
|
min={0}
|
||||||
|
thousandSeparator=','
|
||||||
|
decimalSeparator=''
|
||||||
isError={
|
isError={
|
||||||
isRepeaterInputError('feed_data', 'feed_stock', idx)
|
isRepeaterInputError('feed_data', 'feed_stock', idx)
|
||||||
.isError
|
.isError
|
||||||
@@ -1422,7 +1432,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
vaccine.total_stock === '' ||
|
vaccine.total_stock === '' ||
|
||||||
vaccine.total_stock === undefined
|
vaccine.total_stock === undefined
|
||||||
? ''
|
? ''
|
||||||
: String(vaccine.total_stock)
|
: Number(vaccine.total_stock).toLocaleString('en-US')
|
||||||
}
|
}
|
||||||
onChange={formik.handleChange}
|
onChange={formik.handleChange}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={formik.handleBlur}
|
||||||
@@ -1443,6 +1453,8 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
maskType='number'
|
maskType='number'
|
||||||
decimals={0}
|
decimals={0}
|
||||||
min={0}
|
min={0}
|
||||||
|
thousandSeparator=','
|
||||||
|
decimalSeparator=''
|
||||||
isError={
|
isError={
|
||||||
isRepeaterInputError(
|
isRepeaterInputError(
|
||||||
'vaccination',
|
'vaccination',
|
||||||
@@ -1651,6 +1663,8 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
maskType='number'
|
maskType='number'
|
||||||
decimals={0}
|
decimals={0}
|
||||||
min={0}
|
min={0}
|
||||||
|
thousandSeparator=','
|
||||||
|
decimalSeparator=''
|
||||||
isError={
|
isError={
|
||||||
isRepeaterInputError('mortality', 'count', idx)
|
isRepeaterInputError('mortality', 'count', idx)
|
||||||
.isError
|
.isError
|
||||||
|
|||||||
Reference in New Issue
Block a user