diff --git a/app/src/modules/simulation/actions/conveyor/actionHandler/useDespawnHandler.ts b/app/src/modules/simulation/actions/conveyor/actionHandler/useDespawnHandler.ts index 1c7a69c..750a5d7 100644 --- a/app/src/modules/simulation/actions/conveyor/actionHandler/useDespawnHandler.ts +++ b/app/src/modules/simulation/actions/conveyor/actionHandler/useDespawnHandler.ts @@ -2,7 +2,7 @@ import { useCallback } from "react"; import { useMaterialStore } from "../../../../../store/simulation/useMaterialStore"; export function useDespawnHandler() { - const { addMaterial, getMaterialById, setMaterial } = useMaterialStore(); + const { addMaterial, getMaterialById, removeMaterial } = useMaterialStore(); const deSpawnLogStatus = (materialUuid: string, status: string) => { console.log(`${materialUuid}, ${status}`); @@ -14,9 +14,11 @@ export function useDespawnHandler() { const material = getMaterialById(materialId); if (!material) return; + removeMaterial(material.materialId); + deSpawnLogStatus(material.materialId, `Despawned`); - }, [addMaterial, getMaterialById, setMaterial]); + }, [addMaterial, getMaterialById, removeMaterial]); return { handleDespawn, diff --git a/app/src/modules/simulation/materials/instances/instance/materialInstance.tsx b/app/src/modules/simulation/materials/instances/instance/materialInstance.tsx index 501e00d..a26109c 100644 --- a/app/src/modules/simulation/materials/instances/instance/materialInstance.tsx +++ b/app/src/modules/simulation/materials/instances/instance/materialInstance.tsx @@ -83,13 +83,6 @@ function MaterialInstance({ material }: { material: MaterialSchema }) { } } - useEffect(() => { - if (material.current && material.next) { - // console.log('current: ', material.current.pointUuid); - // console.log('next: ', material.next.pointUuid); - } - }, [material]) - const callTrigger = () => { if (!material.next) return; const fromModel = getEventByModelUuid(selectedProduct.productId, material.next.modelUuid); diff --git a/app/src/modules/simulation/materials/instances/materialInstances.tsx b/app/src/modules/simulation/materials/instances/materialInstances.tsx index 1864f0f..5ad4913 100644 --- a/app/src/modules/simulation/materials/instances/materialInstances.tsx +++ b/app/src/modules/simulation/materials/instances/materialInstances.tsx @@ -3,12 +3,16 @@ import MaterialInstance from './instance/materialInstance' import { useMaterialStore } from '../../../../store/simulation/useMaterialStore'; function MaterialInstances() { - const { materials } = useMaterialStore(); + const { materials, materialHistory } = useMaterialStore(); useEffect(() => { // console.log('materials: ', materials); }, [materials]) + useEffect(() => { + // console.log('materialHistory: ', materialHistory); + }, [materialHistory]) + return ( <> diff --git a/app/src/store/simulation/useMaterialStore.ts b/app/src/store/simulation/useMaterialStore.ts index a2b95cb..044f9c5 100644 --- a/app/src/store/simulation/useMaterialStore.ts +++ b/app/src/store/simulation/useMaterialStore.ts @@ -3,6 +3,7 @@ import { immer } from 'zustand/middleware/immer'; type MaterialsStore = { materials: MaterialsSchema; + materialHistory: MaterialHistorySchema; addMaterial: (material: MaterialSchema) => MaterialSchema | undefined; removeMaterial: (materialId: string) => MaterialSchema | undefined; @@ -41,11 +42,13 @@ type MaterialsStore = { getMaterialByCurrentPointUuid: (currentPointUuid: string) => MaterialSchema | undefined; getMaterialsByPoint: (pointUuid: string) => MaterialSchema[]; getMaterialsByModel: (modelUuid: string) => MaterialSchema[]; + getMaterialHistory: () => MaterialHistorySchema; }; export const useMaterialStore = create()( immer((set, get) => ({ materials: [], + materialHistory: [], addMaterial: (material) => { let updatedMaterial: MaterialSchema | undefined; @@ -60,8 +63,13 @@ export const useMaterialStore = create()( set((state) => { const material = state.materials.find(m => m.materialId === materialId); if (material) { - state.materials.filter(m => m.materialId !== material.materialId); + state.materials = state.materials.filter(m => m.materialId !== materialId); updatedMaterial = JSON.parse(JSON.stringify(material)); + + state.materialHistory.push({ + material, + removedAt: new Date().toISOString() + }); } }); return updatedMaterial; @@ -242,5 +250,9 @@ export const useMaterialStore = create()( m.next?.modelUuid === modelUuid ); }, + + getMaterialHistory: () => { + return get().materialHistory; + }, })) ); \ No newline at end of file diff --git a/app/src/types/simulationTypes.d.ts b/app/src/types/simulationTypes.d.ts index 7dc210b..04b742d 100644 --- a/app/src/types/simulationTypes.d.ts +++ b/app/src/types/simulationTypes.d.ts @@ -219,4 +219,11 @@ interface MaterialSchema { } | null; } -type MaterialsSchema = MaterialSchema[]; \ No newline at end of file +type MaterialsSchema = MaterialSchema[]; + +interface MaterialHistoryEntry { + material: MaterialSchema; + removedAt: string; +} + +type MaterialHistorySchema = MaterialHistoryEntry[]; \ No newline at end of file