2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-18 13:05:42 +00:00

[WIP] Testable parts (#7888)

* Add "testable" field to the Part model

- Default = False
- Determines whether a particular part can have tests defined against it

* Adds data migration to set default 'testable' state

* Update part serializers

* CUI: Update table filters

* PUI: Update tables and filters

* CUI: Update part detail page

* PUI: Update part detail page

* Update CUI

* Update build pages

* Update BuildLine serializer

* Bump API version

* Update docs

* Add 'testable' to fieldset
This commit is contained in:
Oliver
2024-08-16 14:54:33 +10:00
committed by GitHub
parent 70a52c9385
commit 3880e6f07f
29 changed files with 151 additions and 21 deletions

View File

@ -55,6 +55,7 @@ export function usePartFields({
component: {},
assembly: {},
is_template: {},
testable: {},
trackable: {},
purchaseable: {},
salable: {},

View File

@ -129,6 +129,7 @@ const icons = {
shipment: IconTruckDelivery,
scheduling: IconCalendarStats,
test_templates: IconTestPipe,
test: IconTestPipe,
related_parts: IconLayersLinked,
attachments: IconPaperclip,
note: IconNotes,

View File

@ -322,7 +322,7 @@ export default function BuildDetail() {
name: 'test-results',
label: t`Test Results`,
icon: <IconChecklist />,
hidden: !build.part_detail?.trackable,
hidden: !build.part_detail?.testable,
content: build.pk ? (
<BuildOrderTestTable buildId={build.pk} partId={build.part} />
) : (
@ -341,7 +341,7 @@ export default function BuildDetail() {
}}
/>
),
hidden: !build?.part_detail?.trackable
hidden: !build?.part_detail?.testable
},
{
name: 'attachments',

View File

@ -315,6 +315,12 @@ export default function PartDetail() {
name: 'component',
label: t`Component Part`
},
{
type: 'boolean',
name: 'testable',
label: t`Testable Part`,
icon: 'test'
},
{
type: 'boolean',
name: 'trackable',
@ -674,7 +680,7 @@ export default function PartDetail() {
name: 'test_templates',
label: t`Test Templates`,
icon: <IconTestPipe />,
hidden: !part.trackable,
hidden: !part.testable,
content: part?.pk ? (
<PartTestTemplateTable partId={part?.pk} partLocked={part.locked} />
) : (
@ -685,7 +691,7 @@ export default function PartDetail() {
name: 'test_statistics',
label: t`Test Statistics`,
icon: <IconReportAnalytics />,
hidden: !part.trackable,
hidden: !part.testable,
content: part?.pk ? (
<TestStatisticsTable
params={{

View File

@ -119,7 +119,7 @@ export default function StockDetail() {
name: 'tests',
label: `Completed Tests`,
icon: 'progress',
hidden: !part?.trackable
hidden: !part?.testable
},
{
type: 'text',
@ -348,7 +348,7 @@ export default function StockDetail() {
name: 'testdata',
label: t`Test Data`,
icon: <IconChecklist />,
hidden: !stockitem?.part_detail?.trackable,
hidden: !stockitem?.part_detail?.testable,
content: stockitem?.pk ? (
<StockItemTestResultTable
itemId={stockitem.pk}

View File

@ -299,6 +299,11 @@ export function BomTable({
const tableFilters: TableFilter[] = useMemo(() => {
return [
{
name: 'sub_part_testable',
label: t`Testable Part`,
description: t`Show testable items`
},
{
name: 'sub_part_trackable',
label: t`Trackable Part`,

View File

@ -61,6 +61,11 @@ export default function BuildLineTable({
label: t`Assembly`,
description: t`Show assembled items`
},
{
name: 'testable',
label: t`Testable`,
description: t`Show testable items`
},
{
name: 'tracked',
label: t`Tracked`,

View File

@ -47,12 +47,17 @@ export default function BuildOutputTable({ build }: { build: any }) {
// Fetch the test templates associated with the partId
const { data: testTemplates } = useQuery({
queryKey: ['buildoutputtests', partId],
queryKey: ['buildoutputtests', partId, build],
queryFn: async () => {
if (!partId || partId < 0) {
return [];
}
// If the part is not testable, return an empty array
if (!build?.part_detail?.testable) {
return [];
}
return api
.get(apiUrl(ApiEndpoints.part_test_template_list), {
params: {

View File

@ -203,6 +203,12 @@ function partTableFilters(): TableFilter[] {
description: t`Filter by component attribute`,
type: 'boolean'
},
{
name: 'testable',
label: t`Testable`,
description: t`Filter by testable attribute`,
type: 'boolean'
},
{
name: 'trackable',
label: t`Trackable`,