2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-04-05 02:50:58 +00:00

Allow disable edit for ParameterTable

This commit is contained in:
Oliver Walters
2025-12-01 06:08:07 +00:00
parent 89908560c9
commit 9dd20702e2
3 changed files with 42 additions and 13 deletions

View File

@@ -7,10 +7,12 @@ import type { PanelType } from './Panel';
export default function ParametersPanel({ export default function ParametersPanel({
model_type, model_type,
model_id model_id,
allowEdit = true
}: { }: {
model_type: ModelType; model_type: ModelType;
model_id: number | undefined; model_id: number | undefined;
allowEdit?: boolean;
}): PanelType { }): PanelType {
return { return {
name: 'parameters', name: 'parameters',
@@ -18,7 +20,11 @@ export default function ParametersPanel({
icon: <IconListDetails />, icon: <IconListDetails />,
content: content:
model_type && model_id ? ( model_type && model_id ? (
<ParameterTable modelType={model_type} modelId={model_id} /> <ParameterTable
allowEdit={allowEdit}
modelType={model_type}
modelId={model_id}
/>
) : ( ) : (
<Skeleton /> <Skeleton />
) )

View File

@@ -23,6 +23,7 @@ import {
IconInfoCircle, IconInfoCircle,
IconLayersLinked, IconLayersLinked,
IconListCheck, IconListCheck,
IconListDetails,
IconListTree, IconListTree,
IconLock, IconLock,
IconPackages, IconPackages,
@@ -73,7 +74,6 @@ import AttachmentPanel from '../../components/panels/AttachmentPanel';
import NotesPanel from '../../components/panels/NotesPanel'; import NotesPanel from '../../components/panels/NotesPanel';
import type { PanelType } from '../../components/panels/Panel'; import type { PanelType } from '../../components/panels/Panel';
import { PanelGroup } from '../../components/panels/PanelGroup'; import { PanelGroup } from '../../components/panels/PanelGroup';
import ParametersPanel from '../../components/panels/ParametersPanel';
import { RenderPart } from '../../components/render/Part'; import { RenderPart } from '../../components/render/Part';
import { RenderUser } from '../../components/render/User'; import { RenderUser } from '../../components/render/User';
import OrderPartsWizard from '../../components/wizards/OrderPartsWizard'; import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
@@ -97,6 +97,7 @@ import { useUserState } from '../../states/UserState';
import { BomTable } from '../../tables/bom/BomTable'; import { BomTable } from '../../tables/bom/BomTable';
import { UsedInTable } from '../../tables/bom/UsedInTable'; import { UsedInTable } from '../../tables/bom/UsedInTable';
import { BuildOrderTable } from '../../tables/build/BuildOrderTable'; import { BuildOrderTable } from '../../tables/build/BuildOrderTable';
import { ParameterTable } from '../../tables/general/ParameterTable';
import PartPurchaseOrdersTable from '../../tables/part/PartPurchaseOrdersTable'; import PartPurchaseOrdersTable from '../../tables/part/PartPurchaseOrdersTable';
import PartTestResultTable from '../../tables/part/PartTestResultTable'; import PartTestResultTable from '../../tables/part/PartTestResultTable';
import PartTestTemplateTable from '../../tables/part/PartTestTemplateTable'; import PartTestTemplateTable from '../../tables/part/PartTestTemplateTable';
@@ -937,10 +938,30 @@ export default function PartDetail() {
icon: <IconLayersLinked />, icon: <IconLayersLinked />,
content: <RelatedPartTable partId={part.pk} /> content: <RelatedPartTable partId={part.pk} />
}, },
ParametersPanel({ {
model_type: ModelType.part, name: 'parameters',
model_id: part?.pk label: t`Parameters`,
}), icon: <IconListDetails />,
content: (
<>
{part.locked && (
<Alert
title={t`Part is Locked`}
color='orange'
icon={<IconLock />}
p='xs'
>
<Text>{t`Part parameters cannot be edited, as the part is locked`}</Text>
</Alert>
)}
<ParameterTable
modelType={ModelType.part}
modelId={part?.pk}
allowEdit={part?.locked != true}
/>
</>
)
},
AttachmentPanel({ AttachmentPanel({
model_type: ModelType.part, model_type: ModelType.part,
model_id: part?.pk model_id: part?.pk

View File

@@ -38,10 +38,12 @@ import { TableHoverCard } from '../TableHoverCard';
*/ */
export function ParameterTable({ export function ParameterTable({
modelType, modelType,
modelId modelId,
allowEdit = true
}: { }: {
modelType: ModelType; modelType: ModelType;
modelId: number; modelId: number;
allowEdit?: boolean;
}) { }) {
const table = useTable('parameters'); const table = useTable('parameters');
const user = useUserState(); const user = useUserState();
@@ -211,7 +213,7 @@ export function ParameterTable({
]} ]}
/> />
]; ];
}, [user]); }, [allowEdit, user]);
const rowActions = useCallback( const rowActions = useCallback(
(record: any) => { (record: any) => {
@@ -249,10 +251,10 @@ export function ParameterTable({
columns={tableColumns} columns={tableColumns}
props={{ props={{
enableDownload: true, enableDownload: true,
enableBulkDelete: true, enableBulkDelete: allowEdit != false,
enableSelection: true, enableSelection: allowEdit != false,
rowActions: rowActions, rowActions: allowEdit == false ? undefined : rowActions,
tableActions: tableActions, tableActions: allowEdit == false ? undefined : tableActions,
tableFilters: tableFilters, tableFilters: tableFilters,
params: { params: {
model_type: modelType, model_type: modelType,