normalize activity data to ensure consistent display names.

This commit is contained in:
Pramod Mahajan 2025-05-03 12:25:23 +05:30
parent 80d64c87c6
commit 7d5d262728

View File

@ -40,24 +40,19 @@ const TaskModel = ({
const [selectedWorkArea, setSelectedWorkArea] = useState(null);
const [selectedActivity, setSelectedActivity] = useState(null);
const [isSubmitting, setIsSubmitting] = useState(false);
const [activityData, setActivityData] = useState([]);
const {
register,
handleSubmit,
formState: { errors },
reset,
setValue,
} = useForm({
resolver: zodResolver(taskSchema),
defaultValues: defaultModel,
});
useEffect(() => {
if (clearTrigger) {
resetForm();
onClearComplete();
}
}, [clearTrigger, onClearComplete]);
useEffect(() => {
dispatch(changeMaster("Activity"));
resetForm();
@ -104,7 +99,7 @@ const TaskModel = ({
const handleActivityChange = (e) => {
const { value } = e.target;
const activity = activities.find((b) => b.id === Number(value));
const activity = activityData.find((b) => b.id === Number(value));
setSelectedActivity(activity);
reset((prev) => ({
...prev,
@ -115,14 +110,9 @@ const TaskModel = ({
const onSubmitForm = async (data) => {
setIsSubmitting(true);
await onSubmit(data);
reset({
buildingID: data.buildingID,
floorId: data.floorId,
workAreaId: data.workAreaId,
activityID: data.activityID,
plannedWork: 0,
completedWork: 0,
});
setValue("plannedWork", 0);
setValue("completedWork", 0);
dispatch(changeMaster("Activity"));
setIsSubmitting(false);
};
@ -135,6 +125,11 @@ const TaskModel = ({
reset(defaultModel);
};
useEffect(() => {
if (activities && activities.length > 0) {
setActivityData(activities);
}
}, [activities]);
return (
<div className="modal-dialog modal-lg modal-simple modal-edit-user">
<div className="modal-content">
@ -265,18 +260,25 @@ const TaskModel = ({
onChange={handleActivityChange}
>
<option value="0">Select Activity</option>
{activities
?.slice()
?.sort((a, b) => {
const nameA = a?.activityName || "";
const nameB = b?.activityName || "";
return nameA.localeCompare(nameB);
})
?.map((activity) => (
<option key={activity.id} value={activity.id}>
{activity.activityName}
</option>
))}
{activityData && activityData.length > 0 ? (
activityData
?.slice()
?.sort((a, b) => {
const nameA = a?.activityName || "";
const nameB = b?.activityName || "";
return nameA.localeCompare(nameB);
})
?.map((activity) => (
<option key={activity.id} value={activity.id}>
{activity.name ||
activity.activityName ||
activity.title ||
`Unnamed (id: ${activity.id})`}
</option>
))
) : (
<option disabled>No activities available</option> // Fallback if activities are empty
)}
</select>
{errors.activityID && (