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:
@ -55,6 +55,7 @@ export function usePartFields({
|
||||
component: {},
|
||||
assembly: {},
|
||||
is_template: {},
|
||||
testable: {},
|
||||
trackable: {},
|
||||
purchaseable: {},
|
||||
salable: {},
|
||||
|
@ -129,6 +129,7 @@ const icons = {
|
||||
shipment: IconTruckDelivery,
|
||||
scheduling: IconCalendarStats,
|
||||
test_templates: IconTestPipe,
|
||||
test: IconTestPipe,
|
||||
related_parts: IconLayersLinked,
|
||||
attachments: IconPaperclip,
|
||||
note: IconNotes,
|
||||
|
@ -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',
|
||||
|
@ -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={{
|
||||
|
@ -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}
|
||||
|
@ -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`,
|
||||
|
@ -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`,
|
||||
|
@ -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: {
|
||||
|
@ -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`,
|
||||
|
Reference in New Issue
Block a user