2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00

[PUI] Improve search panel (#5538)

* Cleanup links in search bar

* Add renderer for stockitem model

* Add model renderer for build order
This commit is contained in:
Oliver 2023-09-15 00:49:58 +10:00 committed by GitHub
parent 004dcd04d5
commit 56fdbc00c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 4 deletions

View File

@ -2,6 +2,7 @@ import { Trans, t } from '@lingui/macro';
import { import {
ActionIcon, ActionIcon,
Alert, Alert,
Anchor,
Center, Center,
Checkbox, Checkbox,
Divider, Divider,
@ -209,13 +210,13 @@ function QueryResultGroup({
<Divider /> <Divider />
<Stack> <Stack>
{query.results.results.map((result: any) => ( {query.results.results.map((result: any) => (
<div onClick={() => onResultClick(query.name, result.pk)}> <Anchor onClick={() => onResultClick(query.name, result.pk)}>
<RenderInstance <RenderInstance
key={`${query.name}-${result.pk}`} key={`${query.name}-${result.pk}`}
instance={result} instance={result}
model={query.name} model={query.name}
/> />
</div> </Anchor>
))} ))}
</Stack> </Stack>
<Space /> <Space />
@ -340,7 +341,7 @@ export function SearchDrawer({
return ( return (
<Drawer <Drawer
opened={opened} opened={opened}
size="lg" size="md"
onClose={closeDrawer} onClose={closeDrawer}
position="right" position="right"
withCloseButton={false} withCloseButton={false}

View File

@ -0,0 +1,20 @@
import { ReactNode } from 'react';
import { RenderInlineModel } from './Instance';
/**
* Inline rendering of a single BuildOrder instance
*/
export function RenderBuildOrder({
buildorder
}: {
buildorder: any;
}): ReactNode {
return (
<RenderInlineModel
primary={buildorder.reference}
secondary={buildorder.title}
image={buildorder.part_detail?.thumbnail || buildorder.part_detail?.image}
/>
);
}

View File

@ -4,6 +4,7 @@ import { Group, Text } from '@mantine/core';
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import { Thumbnail } from '../items/Thumbnail'; import { Thumbnail } from '../items/Thumbnail';
import { RenderBuildOrder } from './Build';
import { import {
RenderAddress, RenderAddress,
RenderCompany, RenderCompany,
@ -17,7 +18,7 @@ import {
RenderSalesOrderShipment RenderSalesOrderShipment
} from './Order'; } from './Order';
import { RenderPart, RenderPartCategory } from './Part'; import { RenderPart, RenderPartCategory } from './Part';
import { RenderStockLocation } from './Stock'; import { RenderStockItem, RenderStockLocation } from './Stock';
import { RenderOwner, RenderUser } from './User'; import { RenderOwner, RenderUser } from './User';
// import { ApiFormFieldType } from "../forms/fields/ApiFormField"; // import { ApiFormFieldType } from "../forms/fields/ApiFormField";
@ -35,6 +36,8 @@ export function RenderInstance({
switch (model) { switch (model) {
case 'address': case 'address':
return <RenderAddress address={instance} />; return <RenderAddress address={instance} />;
case 'build':
return <RenderBuildOrder buildorder={instance} />;
case 'company': case 'company':
return <RenderCompany company={instance} />; return <RenderCompany company={instance} />;
case 'contact': case 'contact':
@ -55,6 +58,8 @@ export function RenderInstance({
return <RenderSalesOrderShipment shipment={instance} />; return <RenderSalesOrderShipment shipment={instance} />;
case 'stocklocation': case 'stocklocation':
return <RenderStockLocation location={instance} />; return <RenderStockLocation location={instance} />;
case 'stockitem':
return <RenderStockItem item={instance} />;
case 'supplierpart': case 'supplierpart':
return <RenderSupplierPart supplierpart={instance} />; return <RenderSupplierPart supplierpart={instance} />;
case 'user': case 'user':

View File

@ -17,3 +17,13 @@ export function RenderStockLocation({
/> />
); );
} }
export function RenderStockItem({ item }: { item: any }): ReactNode {
return (
<RenderInlineModel
primary={item.part_detail?.full_name}
secondary={item.quantity}
image={item.part_detail?.thumbnail || item.part_detail?.image}
/>
);
}