) => {
if (isSelected && icon === 0) {
setAnchorEl(event.currentTarget);
}
};
const handleIconLeave = () => {
setAnchorEl(null);
};
const handleStatusChange = async (status: DewarStatus) => {
try {
const today = new Date().toISOString().split('T')[0];
const payload = {
dewar_id: dewar.id,
dewar_name: dewar.dewar_name,
tracking_number: dewar.tracking_number,
number_of_pucks: dewar.number_of_pucks,
number_of_samples: dewar.number_of_samples,
status: status,
ready_date: status === 'Ready for Shipping' ? today : null,
shipping_date: dewar.shipping_date,
arrival_date: dewar.arrival_date,
returning_date: dewar.returning_date,
qrcode: dewar.qrcode,
return_address_id: dewar.return_address_id,
contact_person_id: dewar.contact_person_id,
};
await DewarsService.updateDewarDewarsDewarIdPut(dewar.id || '', payload);
setAnchorEl(null);
refreshShipments(); // Refresh shipments after status update
} catch (error) {
console.error('Failed to update dewar status:', error);
alert('Failed to update dewar status. Please try again.');
}
};
const { iconIndex, color } = getIconProperties(icon, dewar);
const IconComponent = ICONS[iconIndex];
const iconProps = iconIndex === 0 ? { fill: color } : {};
return (
{IconComponent
? React.cloneElement(IconComponent, iconProps)
: Invalid icon
}
);
};
const getIconProperties = (icon: number, dewar: Dewar) => {
const status = dewar.status as DewarStatus;
const iconIndex = status === 'Delayed' && icon === 1 ? 5 : icon;
const color = determineIconColor(icon, status);
const fill = status === 'In Preparation' ? color : undefined;
return { iconIndex, color, fill };
};
const steps = ['In-House', 'Transit', 'At SLS', 'Returned'];
type CustomStepperProps = {
dewar: Dewar;
selectedDewarId: string | null;
refreshShipments: () => void; // Add refreshShipments prop
}
const CustomStepper = ({ dewar, selectedDewarId, refreshShipments }: CustomStepperProps) => {
const activeStep = getStatusStepIndex(dewar.status as DewarStatus);
const isSelected = dewar.id === selectedDewarId;
return (
{steps.map((label, index) => (
}
>
{label}
{index === 0 ? dewar.ready_date :
index === 1 ? dewar.shipping_date :
index === 2 ? dewar.arrival_date :
index === 3 ? dewar.returning_date : ''}
))}
);
};
export default CustomStepper;