From 2c7b2d27f930ef5fe6dd21689fc1e498f67ae242 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 30 Mar 2026 08:38:53 +1100 Subject: [PATCH] Badge fix (#11624) * Fix "in production" badge - Use the total scheduled build quantity * Add "Allocated" badge * Tweak playwright tests --- src/frontend/src/pages/part/PartDetail.tsx | 14 ++++++++++++-- src/frontend/tests/pages/pui_part.spec.ts | 5 +++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/frontend/src/pages/part/PartDetail.tsx b/src/frontend/src/pages/part/PartDetail.tsx index ac48b256f1..0cb0cc466e 100644 --- a/src/frontend/src/pages/part/PartDetail.tsx +++ b/src/frontend/src/pages/part/PartDetail.tsx @@ -999,6 +999,10 @@ export default function PartDetail() { return []; } + const allocated = + partRequirements.allocated_to_build_orders + + partRequirements.allocated_to_sales_orders; + const required = partRequirements.required_for_build_orders + partRequirements.required_for_sales_orders; @@ -1031,6 +1035,12 @@ export default function PartDetail() { visible={!part.virtual && partRequirements.total_stock == 0} key='no_stock' />, + 0} + key='allocated' + />, , 0} + visible={partRequirements.scheduled_to_build > 0} key='in_production' />, { // Check top-level badges await page.getByText('In Stock: 209').waitFor(); + await page.getByText(/Allocated: \d/).waitFor(); await page.getByText('Available: 204').waitFor(); await page.getByText(/Required: 2\d+/).waitFor(); - await page.getByText('In Production: 24').waitFor(); + await page.getByText(/In Production: 2\d\d/).waitFor(); // Check requirements details await page.getByText('204 / 209').waitFor(); // Available stock @@ -374,7 +375,7 @@ test('Parts - Requirements', async ({ browser }) => { await page.getByText('In Stock: 44').waitFor(); await page.getByText('Available: 39').waitFor(); await page.getByText('Required: 100').waitFor(); - await page.getByText('In Production: 10').waitFor(); + await page.getByText(/In Production: 1\d\d/).waitFor(); await page.getByText('39 / 44').waitFor(); // Available stock await page.getByText('5 / 100').waitFor(); // Allocated to sales orders