From ccc62255c4986882809439383ebbdacef8223f30 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 3 Jul 2025 10:57:15 +1000 Subject: [PATCH] Additional filters for incomplete build outputs (#9943) --- src/frontend/src/tables/Filter.tsx | 52 +++++++++++++++++++ .../src/tables/build/BuildOutputTable.tsx | 18 ++++++- .../src/tables/stock/StockItemTable.tsx | 50 ++++++------------ 3 files changed, 83 insertions(+), 37 deletions(-) diff --git a/src/frontend/src/tables/Filter.tsx b/src/frontend/src/tables/Filter.tsx index 284a33b5f7..bf238f55bf 100644 --- a/src/frontend/src/tables/Filter.tsx +++ b/src/frontend/src/tables/Filter.tsx @@ -69,6 +69,58 @@ export function StatusFilterOptions( // Define some commonly used filters +export function HasBatchCodeFilter(): TableFilter { + return { + name: 'has_batch', + label: t`Has Batch Code`, + description: t`Show items which have a batch code` + }; +} + +export function BatchFilter(): TableFilter { + return { + name: 'batch', + label: t`Batch Code`, + description: t`Filter items by batch code`, + type: 'text' + }; +} + +export function IsSerializedFilter(): TableFilter { + return { + name: 'serialized', + label: t`Is Serialized`, + description: t`Show items which have a serial number` + }; +} + +export function SerialFilter(): TableFilter { + return { + name: 'serial', + label: t`Serial`, + description: t`Filter items by serial number`, + type: 'text' + }; +} + +export function SerialLTEFilter(): TableFilter { + return { + name: 'serial_lte', + label: t`Serial Below`, + description: t`Show items with serial numbers less than or equal to a given value`, + type: 'text' + }; +} + +export function SerialGTEFilter(): TableFilter { + return { + name: 'serial_gte', + label: t`Serial Above`, + description: t`Show items with serial numbers greater than or equal to a given value`, + type: 'text' + }; +} + export function AssignedToMeFilter(): TableFilter { return { name: 'assigned_to_me', diff --git a/src/frontend/src/tables/build/BuildOutputTable.tsx b/src/frontend/src/tables/build/BuildOutputTable.tsx index 8b4fd05a84..17170b333c 100644 --- a/src/frontend/src/tables/build/BuildOutputTable.tsx +++ b/src/frontend/src/tables/build/BuildOutputTable.tsx @@ -46,7 +46,15 @@ import { useTable } from '../../hooks/UseTable'; import { useUserState } from '../../states/UserState'; import type { TableColumn } from '../Column'; import { LocationColumn, PartColumn, StatusColumn } from '../ColumnRenderers'; -import { StatusFilterOptions } from '../Filter'; +import { + BatchFilter, + HasBatchCodeFilter, + IsSerializedFilter, + SerialFilter, + SerialGTEFilter, + SerialLTEFilter, + StatusFilterOptions +} from '../Filter'; import { InvenTreeTable } from '../InvenTreeTable'; import { type RowAction, RowEditAction, RowViewAction } from '../RowActions'; import { TableHoverCard } from '../TableHoverCard'; @@ -350,7 +358,13 @@ export default function BuildOutputTable({ label: t`Status`, description: t`Filter by stock status`, choiceFunction: StatusFilterOptions(ModelType.stockitem) - } + }, + HasBatchCodeFilter(), + BatchFilter(), + IsSerializedFilter(), + SerialFilter(), + SerialLTEFilter(), + SerialGTEFilter() ]; }, []); diff --git a/src/frontend/src/tables/stock/StockItemTable.tsx b/src/frontend/src/tables/stock/StockItemTable.tsx index 3a5168eef7..b802704567 100644 --- a/src/frontend/src/tables/stock/StockItemTable.tsx +++ b/src/frontend/src/tables/stock/StockItemTable.tsx @@ -36,7 +36,15 @@ import { PathColumn, StatusColumn } from '../ColumnRenderers'; -import { StatusFilterOptions } from '../Filter'; +import { + BatchFilter, + HasBatchCodeFilter, + IsSerializedFilter, + SerialFilter, + SerialGTEFilter, + SerialLTEFilter, + StatusFilterOptions +} from '../Filter'; import { InvenTreeTable } from '../InvenTreeTable'; import { TableHoverCard } from '../TableHoverCard'; @@ -376,40 +384,12 @@ function stockItemTableFilters({ label: t`Sent to Customer`, description: t`Show items which have been sent to a customer` }, - { - name: 'serialized', - label: t`Is Serialized`, - description: t`Show items which have a serial number` - }, - { - name: 'batch', - label: t`Batch Code`, - description: t`Filter items by batch code`, - type: 'text' - }, - { - name: 'serial', - label: t`Serial Number`, - description: t`Filter items by serial number`, - type: 'text' - }, - { - name: 'serial_lte', - label: t`Serial Number LTE`, - description: t`Show items with serial numbers less than or equal to a given value`, - type: 'text' - }, - { - name: 'serial_gte', - label: t`Serial Number GTE`, - description: t`Show items with serial numbers greater than or equal to a given value`, - type: 'text' - }, - { - name: 'has_batch', - label: t`Has Batch Code`, - description: t`Show items which have a batch code` - }, + HasBatchCodeFilter(), + BatchFilter(), + IsSerializedFilter(), + SerialFilter(), + SerialLTEFilter(), + SerialGTEFilter(), { name: 'tracked', label: t`Tracked`,