2025-04-24 11:08:42 +00:00
|
|
|
import React, { useEffect, useRef, useState } from "react";
|
|
|
|
import { useSelectedEventData, useSelectedProduct } from "../../../../../store/simulation/useSimulationStore";
|
|
|
|
import { useProductStore } from "../../../../../store/simulation/useProductStore";
|
2025-04-24 13:45:36 +00:00
|
|
|
import ConveyorMechanics from "./mechanics/conveyorMechanics";
|
|
|
|
import VehicleMechanics from "./mechanics/vehicleMechanics";
|
|
|
|
import RoboticArmMechanics from "./mechanics/roboticArmMechanics";
|
2025-04-25 05:49:40 +00:00
|
|
|
import MachineMechanics from "./mechanics/machineMechanics";
|
|
|
|
import StorageMechanics from "./mechanics/storageMechanics";
|
2025-04-23 11:45:07 +00:00
|
|
|
|
2025-04-24 11:08:42 +00:00
|
|
|
const EventProperties: React.FC = () => {
|
|
|
|
const { selectedEventData } = useSelectedEventData();
|
|
|
|
const { getEventByModelUuid } = useProductStore();
|
|
|
|
const { selectedProduct } = useSelectedProduct();
|
2025-04-24 13:45:36 +00:00
|
|
|
const [currentEventData, setCurrentEventData] = useState<EventsSchema | null>(null);
|
|
|
|
const [assetType, setAssetType] = useState<string | null>(null);
|
2025-04-23 11:45:07 +00:00
|
|
|
|
2025-04-24 11:08:42 +00:00
|
|
|
useEffect(() => {
|
2025-04-24 13:45:36 +00:00
|
|
|
const event = getCurrentEventData();
|
|
|
|
setCurrentEventData(event);
|
2025-04-23 11:45:07 +00:00
|
|
|
|
2025-04-24 13:45:36 +00:00
|
|
|
const type = determineAssetType(event);
|
|
|
|
setAssetType(type);
|
2025-04-23 11:45:07 +00:00
|
|
|
|
2025-04-24 13:45:36 +00:00
|
|
|
}, [selectedEventData, selectedProduct]);
|
2025-04-23 11:45:07 +00:00
|
|
|
|
2025-04-24 11:08:42 +00:00
|
|
|
const getCurrentEventData = () => {
|
|
|
|
if (!selectedEventData?.data || !selectedProduct) return null;
|
2025-04-24 13:45:36 +00:00
|
|
|
return getEventByModelUuid(selectedProduct.productId, selectedEventData.data.modelUuid) || null;
|
2025-04-24 11:08:42 +00:00
|
|
|
};
|
|
|
|
|
2025-04-24 13:45:36 +00:00
|
|
|
const determineAssetType = (event: EventsSchema | null) => {
|
2025-04-24 11:08:42 +00:00
|
|
|
if (!event) return null;
|
|
|
|
|
|
|
|
switch (event.type) {
|
|
|
|
case 'transfer': return 'conveyor';
|
|
|
|
case 'vehicle': return 'vehicle';
|
|
|
|
case 'roboticArm': return 'roboticArm';
|
|
|
|
case 'machine': return 'machine';
|
|
|
|
case 'storageUnit': return 'storageUnit';
|
|
|
|
default: return null;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
2025-04-24 13:45:36 +00:00
|
|
|
<div className="event-proprties-wrapper">
|
|
|
|
{currentEventData &&
|
|
|
|
<>
|
|
|
|
<div className="header">
|
|
|
|
<div className="header-value">{selectedEventData?.data.modelName}</div>
|
|
|
|
</div>
|
2025-04-25 05:49:40 +00:00
|
|
|
{assetType === 'conveyor' && <ConveyorMechanics />}
|
2025-04-24 13:45:36 +00:00
|
|
|
{assetType === 'vehicle' && <VehicleMechanics />}
|
2025-04-25 05:49:40 +00:00
|
|
|
{assetType === 'roboticArm' && <RoboticArmMechanics />}
|
|
|
|
{assetType === 'machine' && <MachineMechanics />}
|
|
|
|
{assetType === 'storageUnit' && <StorageMechanics />}
|
2025-04-24 13:45:36 +00:00
|
|
|
</>
|
|
|
|
}
|
2025-04-23 11:45:07 +00:00
|
|
|
</div>
|
2025-04-24 11:08:42 +00:00
|
|
|
);
|
2025-04-23 11:45:07 +00:00
|
|
|
};
|
|
|
|
|
2025-04-24 13:45:36 +00:00
|
|
|
export default EventProperties;
|