Skip to content

Commit 4e9a4a9

Browse files
committed
#4116 requested changes
1 parent c2edde4 commit 4e9a4a9

7 files changed

Lines changed: 14 additions & 24 deletions

File tree

src/backend/src/prisma/migrations/20260303225351_bom_improvements/migration.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,3 @@ BEGIN
8686
);
8787
END LOOP;
8888
END $$;
89-
90-
-- AlterTable
91-
ALTER TABLE "Material" ADD COLUMN "isCopied" BOOLEAN NOT NULL DEFAULT false;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- AlterTable
2+
ALTER TABLE "Material" ADD COLUMN "isCopied" BOOLEAN NOT NULL DEFAULT false;

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/MaterialForm/BOMCopyConfirmModal.tsx renamed to src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/CopyBOM/BOMCopyConfirmModal.tsx

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,12 @@ const BOMCopyConfirmModal = ({
2020
currentProjectName,
2121
destinationWbsNum
2222
}: BOMCopyConfirmModalProps) => {
23-
const copyMaterials = useCopyMaterialsToProject();
23+
const { mutateAsync: copyMaterials } = useCopyMaterialsToProject();
2424

25-
const handleConfirm = () => {
26-
copyMaterials.mutate(
27-
{
28-
materialIds,
29-
destinationWbsNum
30-
},
31-
{
32-
onSuccess: () => {
33-
onSuccess();
34-
onHide();
35-
}
36-
}
37-
);
25+
const handleConfirm = async () => {
26+
await copyMaterials({ materialIds, destinationWbsNum });
27+
onSuccess();
28+
onHide();
3829
};
3930

4031
const message = `Are you sure you want to copy ${materialIds.length} materials from ${sourceProjectName} to ${currentProjectName}?`;

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/CopyBOM/CopyBOMModal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useAllProjects } from '../../../../../hooks/projects.hooks';
55
import React, { useState } from 'react';
66
import ErrorPage from '../../../../ErrorPage';
77
import LoadingIndicator from '../../../../../components/LoadingIndicator';
8-
import BOMCopyConfirmModal from '../MaterialForm/BOMCopyConfirmModal';
8+
import BOMCopyConfirmModal from './BOMCopyConfirmModal';
99

1010
export interface CopyBOMModalProps {
1111
open: boolean;
@@ -21,9 +21,9 @@ const CopyBOMModal: React.FC<CopyBOMModalProps> = ({ open, onHide, destinationWb
2121
const [confirmedMaterialIds, setConfirmedMaterialIds] = useState<string[]>([]);
2222
const [confirmedSourceProjectName, setConfirmedSourceProjectName] = useState('');
2323

24-
if (isLoadingCars || !cars || isLoadingProjects || !projects) return <LoadingIndicator />;
2524
if (carsIsError) return <ErrorPage message={carsError?.message} />;
2625
if (projectsIsError) return <ErrorPage message={projectsError?.message} />;
26+
if (isLoadingCars || !cars || isLoadingProjects || !projects) return <LoadingIndicator />;
2727

2828
const destinationWbs = wbsPipe(destinationWbsNum);
2929

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/CopyBOM/CopyBOMProjectSection.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import React, { useEffect } from 'react';
22
import { Typography } from '@mui/material';
33
import { DataGrid, GridColDef } from '@mui/x-data-grid';
44
import { useState } from 'react';
@@ -35,17 +35,17 @@ const CopyBOMProjectSection: React.FC<CopyBOMProjectSectionProps> = ({ selectedP
3535
error: assembliesError
3636
} = useGetAssembliesForWbsElement(selectedProject.wbsNum);
3737

38-
React.useEffect(() => {
38+
useEffect(() => {
3939
if (materials) {
4040
const allIds = materials.map((m) => m.materialId);
4141
setSelectedMaterialIds(allIds);
4242
onSelectionChange(allIds);
4343
}
4444
}, [materials, onSelectionChange]);
4545

46-
if (isLoadingMaterials || isLoadingAssemblies || !materials || !assemblies) return <LoadingIndicator />;
4746
if (isErrorMaterials) return <ErrorPage message={materialsError?.message} />;
4847
if (isErrorAssemblies) return <ErrorPage message={assembliesError?.message} />;
48+
if (isLoadingMaterials || isLoadingAssemblies || !materials || !assemblies) return <LoadingIndicator />;
4949

5050
const rows = materials.map((m) => ({
5151
id: m.materialId,

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/MaterialForm/SelectMaterialToCopyModal.tsx renamed to src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/CopyBOM/SelectMaterialToCopyModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ const SelectMaterialToCopyModal: React.FC<SelectMaterialToCopyModalProps> = ({ o
118118

119119
// Selecting from the search bar auto-populates the project and material dropdowns
120120
const handleSearchSelect = useCallback(
121-
(_: React.SyntheticEvent, value: AutocompleteOption | null) => {
121+
(_, value: AutocompleteOption | null) => {
122122
if (!value) return;
123123
const material = (carMaterials ?? []).find((m) => m.materialId === value.id) ?? null;
124124
if (!material) return;

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/MaterialForm/MaterialFormView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { displayEnum } from '../../../../../utils/pipes';
2727
import { MaterialStatus } from 'shared';
2828
import React, { useState } from 'react';
2929
import { AddCircle } from '@mui/icons-material';
30-
import SelectMaterialToCopyModal from './SelectMaterialToCopyModal';
30+
import SelectMaterialToCopyModal from '../CopyBOM/SelectMaterialToCopyModal';
3131

3232
export interface MaterialFormViewProps {
3333
submitText: 'Add' | 'Edit';

0 commit comments

Comments
 (0)