Merge commit '47c6906a74f41eed5b56f4dc43ea0d4e20415237' into block-notes

This commit is contained in:
Oliver Walters
2026-06-02 07:33:29 +00:00
85 changed files with 31217 additions and 28215 deletions
@@ -4,7 +4,7 @@ import { apiUrl } from '@lib/functions/Api';
import { StylishText } from '@lib/index';
import { t } from '@lingui/core/macro';
import { BarChart } from '@mantine/charts';
import { Stack } from '@mantine/core';
import { Box, LoadingOverlay, Stack } from '@mantine/core';
import { useDocumentVisibility } from '@mantine/hooks';
import { useQuery } from '@tanstack/react-query';
import dayjs from 'dayjs';
@@ -84,13 +84,17 @@ function OrderHistoryComponent({
return (
<Stack gap='xs'>
<StylishText size='md'>{title}</StylishText>
<BarChart
h={200}
data={chartData}
dataKey='month'
series={[{ name: 'count', label: t`Completed`, color: 'blue.6' }]}
withYAxis={false}
/>
<Box>
<LoadingOverlay visible={query.isLoading || query.isFetching} />
<BarChart
h={200}
data={chartData}
dataKey='month'
series={[{ name: 'count', label: t`Completed`, color: 'blue.6' }]}
withYAxis={false}
yAxisProps={{ domain: [0, 'auto'] }}
/>
</Box>
</Stack>
);
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+10 -4
View File
@@ -122,6 +122,13 @@ export default function StockDetail() {
}
});
const { instance: part, instanceQuery: partQuery } = useInstance({
endpoint: ApiEndpoints.part_list,
pk: stockitem?.part,
hasPrimaryKey: true,
defaultValue: {}
});
const { instance: serialNumbers, instanceQuery: serialNumbersQuery } =
useInstance({
endpoint: ApiEndpoints.stock_serial_info,
@@ -884,9 +891,8 @@ export default function StockDetail() {
serial != '' &&
stockitem.quantity == 1;
const canConvert =
!!stockitem.part_detail?.variant_of ||
!!stockitem.part_detail?.is_template;
// Allow variant conversion if the part is a variant, or if the part is a template
const canConvert = part?.variant_of || part?.is_template;
return [
<AdminButton model={ModelType.stockitem} id={stockitem.pk} />,
@@ -967,7 +973,7 @@ export default function StockDetail() {
]}
/>
];
}, [id, stockitem, user, stockAdjustActions.menuActions]);
}, [id, stockitem, part, user, stockAdjustActions.menuActions]);
const stockBadges: ReactNode[] = useMemo(() => {
let available = (stockitem?.quantity ?? 0) - (stockitem?.allocated ?? 0);