mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-15 03:25:42 +00:00
Re-use UserTable
This commit is contained in:
@ -8,8 +8,8 @@ import { PageDetail } from '../../components/nav/PageDetail';
|
|||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { ContactTable } from '../../tables/company/ContactTable';
|
import { ContactTable } from '../../tables/company/ContactTable';
|
||||||
import { UserTable } from '../../tables/core/UserTable';
|
|
||||||
import { GroupTable } from '../../tables/settings/GroupTable';
|
import { GroupTable } from '../../tables/settings/GroupTable';
|
||||||
|
import { UserTable } from '../../tables/settings/UserTable';
|
||||||
|
|
||||||
export default function CoreIndex() {
|
export default function CoreIndex() {
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
|
||||||
import { useMemo } from 'react';
|
|
||||||
import { ApiEndpoints } from '../../enums/ApiEndpoints';
|
|
||||||
import { ModelType } from '../../enums/ModelType';
|
|
||||||
import {} from '../../hooks/UseFilter';
|
|
||||||
import { useTable } from '../../hooks/UseTable';
|
|
||||||
import { apiUrl } from '../../states/ApiState';
|
|
||||||
import { BooleanColumn } from '../ColumnRenderers';
|
|
||||||
import type { TableFilter } from '../Filter';
|
|
||||||
import { InvenTreeTable } from '../InvenTreeTable';
|
|
||||||
|
|
||||||
export function UserTable() {
|
|
||||||
const table = useTable('users-index');
|
|
||||||
|
|
||||||
const tableFilters: TableFilter[] = useMemo(() => {
|
|
||||||
const filters: TableFilter[] = [
|
|
||||||
{
|
|
||||||
name: 'is_active',
|
|
||||||
label: t`Active`,
|
|
||||||
description: t`Show active users`
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'is_staff',
|
|
||||||
label: t`Staff`,
|
|
||||||
description: t`Show staff users`
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'is_superuser',
|
|
||||||
label: t`Superuser`,
|
|
||||||
description: t`Show superusers`
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
return filters;
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const tableColumns = useMemo(() => {
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
accessor: 'username',
|
|
||||||
sortable: true,
|
|
||||||
switchable: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
accessor: 'first_name',
|
|
||||||
sortable: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
accessor: 'last_name',
|
|
||||||
sortable: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
accessor: 'email',
|
|
||||||
sortable: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
accessor: 'groups',
|
|
||||||
title: t`Groups`,
|
|
||||||
sortable: true,
|
|
||||||
switchable: true,
|
|
||||||
render: (record: any) => {
|
|
||||||
return record.groups.length;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
BooleanColumn({
|
|
||||||
accessor: 'is_staff'
|
|
||||||
}),
|
|
||||||
BooleanColumn({
|
|
||||||
accessor: 'is_superuser'
|
|
||||||
}),
|
|
||||||
BooleanColumn({
|
|
||||||
accessor: 'is_active'
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<InvenTreeTable
|
|
||||||
url={apiUrl(ApiEndpoints.user_list)}
|
|
||||||
tableState={table}
|
|
||||||
columns={tableColumns}
|
|
||||||
props={{
|
|
||||||
tableFilters: tableFilters,
|
|
||||||
modelType: ModelType.user
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
@ -103,7 +103,10 @@ export function GroupDrawer({
|
|||||||
url: ApiEndpoints.group_list,
|
url: ApiEndpoints.group_list,
|
||||||
pk: id,
|
pk: id,
|
||||||
fields: {
|
fields: {
|
||||||
name: {}
|
name: {
|
||||||
|
label: t`Name`,
|
||||||
|
description: t`Name of the user group`
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onFormSuccess: () => {
|
onFormSuccess: () => {
|
||||||
refreshTable();
|
refreshTable();
|
||||||
@ -185,8 +188,13 @@ export function GroupTable({
|
|||||||
|
|
||||||
const newGroup = useCreateApiFormModal({
|
const newGroup = useCreateApiFormModal({
|
||||||
url: ApiEndpoints.group_list,
|
url: ApiEndpoints.group_list,
|
||||||
title: t`Add group`,
|
title: t`Add Group`,
|
||||||
fields: { name: {} },
|
fields: {
|
||||||
|
name: {
|
||||||
|
label: t`Name`,
|
||||||
|
description: t`Name of the user group`
|
||||||
|
}
|
||||||
|
},
|
||||||
table: table
|
table: table
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -210,7 +218,7 @@ export function GroupTable({
|
|||||||
{newGroup.modal}
|
{newGroup.modal}
|
||||||
{deleteGroup.modal}
|
{deleteGroup.modal}
|
||||||
<DetailDrawer
|
<DetailDrawer
|
||||||
title={t`Edit group`}
|
title={t`Edit Group`}
|
||||||
renderContent={(id) => {
|
renderContent={(id) => {
|
||||||
if (!id || !id.startsWith('group-')) return false;
|
if (!id || !id.startsWith('group-')) return false;
|
||||||
return (
|
return (
|
||||||
|
@ -265,6 +265,8 @@ export function UserTable() {
|
|||||||
const tableActions = useMemo(() => {
|
const tableActions = useMemo(() => {
|
||||||
const actions = [];
|
const actions = [];
|
||||||
|
|
||||||
|
console.log('tableActions:', user.hasAddPermission(ModelType.user));
|
||||||
|
|
||||||
actions.push(
|
actions.push(
|
||||||
<AddItemButton
|
<AddItemButton
|
||||||
key='add-user'
|
key='add-user'
|
||||||
@ -302,7 +304,7 @@ export function UserTable() {
|
|||||||
{newUser.modal}
|
{newUser.modal}
|
||||||
{deleteUser.modal}
|
{deleteUser.modal}
|
||||||
<DetailDrawer
|
<DetailDrawer
|
||||||
title={t`Edit user`}
|
title={t`Edit User`}
|
||||||
renderContent={(id) => {
|
renderContent={(id) => {
|
||||||
if (!id || !id.startsWith('user-')) return false;
|
if (!id || !id.startsWith('user-')) return false;
|
||||||
return (
|
return (
|
||||||
|
Reference in New Issue
Block a user