From 9dd20702e2b6b06655a301e0588e8475634b7a91 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 1 Dec 2025 06:08:07 +0000 Subject: [PATCH] Allow disable edit for ParameterTable --- .../src/components/panels/ParametersPanel.tsx | 10 ++++-- src/frontend/src/pages/part/PartDetail.tsx | 31 ++++++++++++++++--- .../src/tables/general/ParameterTable.tsx | 14 +++++---- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/frontend/src/components/panels/ParametersPanel.tsx b/src/frontend/src/components/panels/ParametersPanel.tsx index 14a0afa593..03450e2aa8 100644 --- a/src/frontend/src/components/panels/ParametersPanel.tsx +++ b/src/frontend/src/components/panels/ParametersPanel.tsx @@ -7,10 +7,12 @@ import type { PanelType } from './Panel'; export default function ParametersPanel({ model_type, - model_id + model_id, + allowEdit = true }: { model_type: ModelType; model_id: number | undefined; + allowEdit?: boolean; }): PanelType { return { name: 'parameters', @@ -18,7 +20,11 @@ export default function ParametersPanel({ icon: , content: model_type && model_id ? ( - + ) : ( ) diff --git a/src/frontend/src/pages/part/PartDetail.tsx b/src/frontend/src/pages/part/PartDetail.tsx index 8f0f20d822..23b9350fce 100644 --- a/src/frontend/src/pages/part/PartDetail.tsx +++ b/src/frontend/src/pages/part/PartDetail.tsx @@ -23,6 +23,7 @@ import { IconInfoCircle, IconLayersLinked, IconListCheck, + IconListDetails, IconListTree, IconLock, IconPackages, @@ -73,7 +74,6 @@ import AttachmentPanel from '../../components/panels/AttachmentPanel'; import NotesPanel from '../../components/panels/NotesPanel'; import type { PanelType } from '../../components/panels/Panel'; import { PanelGroup } from '../../components/panels/PanelGroup'; -import ParametersPanel from '../../components/panels/ParametersPanel'; import { RenderPart } from '../../components/render/Part'; import { RenderUser } from '../../components/render/User'; import OrderPartsWizard from '../../components/wizards/OrderPartsWizard'; @@ -97,6 +97,7 @@ import { useUserState } from '../../states/UserState'; import { BomTable } from '../../tables/bom/BomTable'; import { UsedInTable } from '../../tables/bom/UsedInTable'; import { BuildOrderTable } from '../../tables/build/BuildOrderTable'; +import { ParameterTable } from '../../tables/general/ParameterTable'; import PartPurchaseOrdersTable from '../../tables/part/PartPurchaseOrdersTable'; import PartTestResultTable from '../../tables/part/PartTestResultTable'; import PartTestTemplateTable from '../../tables/part/PartTestTemplateTable'; @@ -937,10 +938,30 @@ export default function PartDetail() { icon: , content: }, - ParametersPanel({ - model_type: ModelType.part, - model_id: part?.pk - }), + { + name: 'parameters', + label: t`Parameters`, + icon: , + content: ( + <> + {part.locked && ( + } + p='xs' + > + {t`Part parameters cannot be edited, as the part is locked`} + + )} + + + ) + }, AttachmentPanel({ model_type: ModelType.part, model_id: part?.pk diff --git a/src/frontend/src/tables/general/ParameterTable.tsx b/src/frontend/src/tables/general/ParameterTable.tsx index eb995c5a4f..d7654e878a 100644 --- a/src/frontend/src/tables/general/ParameterTable.tsx +++ b/src/frontend/src/tables/general/ParameterTable.tsx @@ -38,10 +38,12 @@ import { TableHoverCard } from '../TableHoverCard'; */ export function ParameterTable({ modelType, - modelId + modelId, + allowEdit = true }: { modelType: ModelType; modelId: number; + allowEdit?: boolean; }) { const table = useTable('parameters'); const user = useUserState(); @@ -211,7 +213,7 @@ export function ParameterTable({ ]} /> ]; - }, [user]); + }, [allowEdit, user]); const rowActions = useCallback( (record: any) => { @@ -249,10 +251,10 @@ export function ParameterTable({ columns={tableColumns} props={{ enableDownload: true, - enableBulkDelete: true, - enableSelection: true, - rowActions: rowActions, - tableActions: tableActions, + enableBulkDelete: allowEdit != false, + enableSelection: allowEdit != false, + rowActions: allowEdit == false ? undefined : rowActions, + tableActions: allowEdit == false ? undefined : tableActions, tableFilters: tableFilters, params: { model_type: modelType,