mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 11:36:44 +00:00
* add location type to PUI * fix add form bug where it contains the previous editing data when reusing the same fields * fix sonarcloud issues
197 lines
4.9 KiB
TypeScript
197 lines
4.9 KiB
TypeScript
import { Trans, t } from '@lingui/macro';
|
|
import { Divider, Paper, SimpleGrid, Stack, Text, Title } from '@mantine/core';
|
|
import {
|
|
IconCoins,
|
|
IconCpu,
|
|
IconDevicesPc,
|
|
IconExclamationCircle,
|
|
IconList,
|
|
IconListDetails,
|
|
IconPackages,
|
|
IconPlugConnected,
|
|
IconScale,
|
|
IconSitemap,
|
|
IconTemplate,
|
|
IconUsersGroup
|
|
} from '@tabler/icons-react';
|
|
import { lazy, useMemo } from 'react';
|
|
|
|
import { PlaceholderPill } from '../../../../components/items/Placeholder';
|
|
import { PanelGroup, PanelType } from '../../../../components/nav/PanelGroup';
|
|
import { SettingsHeader } from '../../../../components/nav/SettingsHeader';
|
|
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
|
import { Loadable } from '../../../../functions/loading';
|
|
|
|
const UserManagementPanel = Loadable(
|
|
lazy(() => import('./UserManagementPanel'))
|
|
);
|
|
|
|
const TaskManagementPanel = Loadable(
|
|
lazy(() => import('./TaskManagementPanel'))
|
|
);
|
|
|
|
const PluginManagementPanel = Loadable(
|
|
lazy(() => import('./PluginManagementPanel'))
|
|
);
|
|
|
|
const MachineManagementPanel = Loadable(
|
|
lazy(() => import('./MachineManagementPanel'))
|
|
);
|
|
|
|
const ErrorReportTable = Loadable(
|
|
lazy(() => import('../../../../tables/settings/ErrorTable'))
|
|
);
|
|
|
|
const ProjectCodeTable = Loadable(
|
|
lazy(() => import('../../../../tables/settings/ProjectCodeTable'))
|
|
);
|
|
|
|
const CustomUnitsTable = Loadable(
|
|
lazy(() => import('../../../../tables/settings/CustomUnitsTable'))
|
|
);
|
|
|
|
const PartParameterTemplateTable = Loadable(
|
|
lazy(() => import('../../../../tables/part/PartParameterTemplateTable'))
|
|
);
|
|
|
|
const PartCategoryTemplateTable = Loadable(
|
|
lazy(() => import('../../../../tables/part/PartCategoryTemplateTable'))
|
|
);
|
|
|
|
const LocationTypesTable = Loadable(
|
|
lazy(() => import('../../../../tables/stock/LocationTypesTable'))
|
|
);
|
|
|
|
const CurrencyTable = Loadable(
|
|
lazy(() => import('../../../../tables/settings/CurrencyTable'))
|
|
);
|
|
|
|
const TemplateManagementPanel = Loadable(
|
|
lazy(() => import('./TemplateManagementPanel'))
|
|
);
|
|
|
|
export default function AdminCenter() {
|
|
const adminCenterPanels: PanelType[] = useMemo(() => {
|
|
return [
|
|
{
|
|
name: 'user',
|
|
label: t`Users`,
|
|
icon: <IconUsersGroup />,
|
|
content: <UserManagementPanel />
|
|
},
|
|
{
|
|
name: 'background',
|
|
label: t`Background Tasks`,
|
|
icon: <IconCpu />,
|
|
content: <TaskManagementPanel />
|
|
},
|
|
{
|
|
name: 'errors',
|
|
label: t`Error Reports`,
|
|
icon: <IconExclamationCircle />,
|
|
content: <ErrorReportTable />
|
|
},
|
|
{
|
|
name: 'currencies',
|
|
label: t`Currencies`,
|
|
icon: <IconCoins />,
|
|
content: <CurrencyTable />
|
|
},
|
|
{
|
|
name: 'projectcodes',
|
|
label: t`Project Codes`,
|
|
icon: <IconListDetails />,
|
|
content: (
|
|
<Stack gap="xs">
|
|
<GlobalSettingList keys={['PROJECT_CODES_ENABLED']} />
|
|
<Divider />
|
|
<ProjectCodeTable />
|
|
</Stack>
|
|
)
|
|
},
|
|
{
|
|
name: 'customunits',
|
|
label: t`Custom Units`,
|
|
icon: <IconScale />,
|
|
content: <CustomUnitsTable />
|
|
},
|
|
{
|
|
name: 'part-parameters',
|
|
label: t`Part Parameters`,
|
|
icon: <IconList />,
|
|
content: <PartParameterTemplateTable />
|
|
},
|
|
{
|
|
name: 'category-parameters',
|
|
label: t`Category Parameters`,
|
|
icon: <IconSitemap />,
|
|
content: <PartCategoryTemplateTable />
|
|
},
|
|
{
|
|
name: 'location-types',
|
|
label: t`Location types`,
|
|
icon: <IconPackages />,
|
|
content: <LocationTypesTable />
|
|
},
|
|
{
|
|
name: 'templates',
|
|
label: t`Templates`,
|
|
icon: <IconTemplate />,
|
|
content: <TemplateManagementPanel />
|
|
},
|
|
{
|
|
name: 'plugin',
|
|
label: t`Plugins`,
|
|
icon: <IconPlugConnected />,
|
|
content: <PluginManagementPanel />
|
|
},
|
|
{
|
|
name: 'machine',
|
|
label: t`Machines`,
|
|
icon: <IconDevicesPc />,
|
|
content: <MachineManagementPanel />
|
|
}
|
|
];
|
|
}, []);
|
|
|
|
const QuickAction = () => (
|
|
<Stack gap={'xs'} ml={'sm'}>
|
|
<Title order={5}>
|
|
<Trans>Quick Actions</Trans>
|
|
</Title>
|
|
<SimpleGrid cols={3}>
|
|
<Paper shadow="xs" p="sm" withBorder>
|
|
<Text>
|
|
<Trans>Add a new user</Trans>
|
|
</Text>
|
|
</Paper>
|
|
|
|
<Paper shadow="xs" p="sm" withBorder>
|
|
<PlaceholderPill />
|
|
</Paper>
|
|
|
|
<Paper shadow="xs" p="sm" withBorder>
|
|
<PlaceholderPill />
|
|
</Paper>
|
|
</SimpleGrid>
|
|
</Stack>
|
|
);
|
|
|
|
return (
|
|
<Stack gap="xs">
|
|
<SettingsHeader
|
|
title={t`Admin Center`}
|
|
subtitle={t`Advanced Options`}
|
|
switch_link="/settings/system"
|
|
switch_text="System Settings"
|
|
/>
|
|
<QuickAction />
|
|
<PanelGroup
|
|
pageKey="admin-center"
|
|
panels={adminCenterPanels}
|
|
collapsible={true}
|
|
/>
|
|
</Stack>
|
|
);
|
|
}
|