mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 20:16:44 +00:00
[PUI] Task table enhancements (#8369)
* Refresh task counts when updating tables * Handle case where error is null
This commit is contained in:
parent
3253a4a93c
commit
9fd882f95e
@ -7,21 +7,15 @@ import { FactCollection } from '../../../../components/settings/FactCollection';
|
|||||||
import { ApiEndpoints } from '../../../../enums/ApiEndpoints';
|
import { ApiEndpoints } from '../../../../enums/ApiEndpoints';
|
||||||
import { Loadable } from '../../../../functions/loading';
|
import { Loadable } from '../../../../functions/loading';
|
||||||
import { useInstance } from '../../../../hooks/UseInstance';
|
import { useInstance } from '../../../../hooks/UseInstance';
|
||||||
|
import FailedTasksTable from '../../../../tables/settings/FailedTasksTable';
|
||||||
const PendingTasksTable = Loadable(
|
import PendingTasksTable from '../../../../tables/settings/PendingTasksTable';
|
||||||
lazy(() => import('../../../../tables/settings/PendingTasksTable'))
|
|
||||||
);
|
|
||||||
|
|
||||||
const ScheduledTasksTable = Loadable(
|
const ScheduledTasksTable = Loadable(
|
||||||
lazy(() => import('../../../../tables/settings/ScheduledTasksTable'))
|
lazy(() => import('../../../../tables/settings/ScheduledTasksTable'))
|
||||||
);
|
);
|
||||||
|
|
||||||
const FailedTasksTable = Loadable(
|
|
||||||
lazy(() => import('../../../../tables/settings/FailedTasksTable'))
|
|
||||||
);
|
|
||||||
|
|
||||||
export default function TaskManagementPanel() {
|
export default function TaskManagementPanel() {
|
||||||
const { instance: taskInfo } = useInstance({
|
const { instance: taskInfo, refreshInstance: refreshTaskInfo } = useInstance({
|
||||||
endpoint: ApiEndpoints.task_overview,
|
endpoint: ApiEndpoints.task_overview,
|
||||||
hasPrimaryKey: false,
|
hasPrimaryKey: false,
|
||||||
refetchOnMount: true,
|
refetchOnMount: true,
|
||||||
@ -51,7 +45,7 @@ export default function TaskManagementPanel() {
|
|||||||
<StylishText size="lg">{t`Pending Tasks`}</StylishText>
|
<StylishText size="lg">{t`Pending Tasks`}</StylishText>
|
||||||
</Accordion.Control>
|
</Accordion.Control>
|
||||||
<Accordion.Panel>
|
<Accordion.Panel>
|
||||||
<PendingTasksTable />
|
<PendingTasksTable onRecordsUpdated={refreshTaskInfo} />
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
<Accordion.Item value="scheduled" key="scheduled-tasks">
|
<Accordion.Item value="scheduled" key="scheduled-tasks">
|
||||||
@ -67,7 +61,7 @@ export default function TaskManagementPanel() {
|
|||||||
<StylishText size="lg">{t`Failed Tasks`}</StylishText>
|
<StylishText size="lg">{t`Failed Tasks`}</StylishText>
|
||||||
</Accordion.Control>
|
</Accordion.Control>
|
||||||
<Accordion.Panel>
|
<Accordion.Panel>
|
||||||
<FailedTasksTable />
|
<FailedTasksTable onRecordsUpdated={refreshTaskInfo} />
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import { t } from '@lingui/macro';
|
import { t } from '@lingui/macro';
|
||||||
import { Drawer, Text } from '@mantine/core';
|
import { Drawer, Text } from '@mantine/core';
|
||||||
import { useDisclosure } from '@mantine/hooks';
|
import { useDisclosure } from '@mantine/hooks';
|
||||||
|
import { hideNotification, showNotification } from '@mantine/notifications';
|
||||||
|
import { IconExclamationCircle } from '@tabler/icons-react';
|
||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
import { StylishText } from '../../components/items/StylishText';
|
||||||
@ -11,7 +13,11 @@ import { useUserState } from '../../states/UserState';
|
|||||||
import { TableColumn } from '../Column';
|
import { TableColumn } from '../Column';
|
||||||
import { InvenTreeTable } from '../InvenTreeTable';
|
import { InvenTreeTable } from '../InvenTreeTable';
|
||||||
|
|
||||||
export default function FailedTasksTable() {
|
export default function FailedTasksTable({
|
||||||
|
onRecordsUpdated
|
||||||
|
}: {
|
||||||
|
onRecordsUpdated: () => void;
|
||||||
|
}) {
|
||||||
const table = useTable('tasks-failed');
|
const table = useTable('tasks-failed');
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
|
|
||||||
@ -73,10 +79,22 @@ export default function FailedTasksTable() {
|
|||||||
columns={columns}
|
columns={columns}
|
||||||
props={{
|
props={{
|
||||||
enableBulkDelete: user.isStaff(),
|
enableBulkDelete: user.isStaff(),
|
||||||
|
afterBulkDelete: onRecordsUpdated,
|
||||||
enableSelection: true,
|
enableSelection: true,
|
||||||
onRowClick: (row: any) => {
|
onRowClick: (row: any) => {
|
||||||
setError(row.result);
|
if (row.result) {
|
||||||
open();
|
setError(row.result);
|
||||||
|
open();
|
||||||
|
} else {
|
||||||
|
hideNotification('failed-task');
|
||||||
|
showNotification({
|
||||||
|
id: 'failed-task',
|
||||||
|
title: t`No Information`,
|
||||||
|
message: t`No error details are available for this task`,
|
||||||
|
color: 'red',
|
||||||
|
icon: <IconExclamationCircle />
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
@ -8,7 +8,11 @@ import { useUserState } from '../../states/UserState';
|
|||||||
import { TableColumn } from '../Column';
|
import { TableColumn } from '../Column';
|
||||||
import { InvenTreeTable } from '../InvenTreeTable';
|
import { InvenTreeTable } from '../InvenTreeTable';
|
||||||
|
|
||||||
export default function PendingTasksTable() {
|
export default function PendingTasksTable({
|
||||||
|
onRecordsUpdated
|
||||||
|
}: {
|
||||||
|
onRecordsUpdated: () => void;
|
||||||
|
}) {
|
||||||
const table = useTable('tasks-pending');
|
const table = useTable('tasks-pending');
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
|
|
||||||
@ -50,6 +54,7 @@ export default function PendingTasksTable() {
|
|||||||
tableState={table}
|
tableState={table}
|
||||||
columns={columns}
|
columns={columns}
|
||||||
props={{
|
props={{
|
||||||
|
afterBulkDelete: onRecordsUpdated,
|
||||||
enableBulkDelete: user.isStaff(),
|
enableBulkDelete: user.isStaff(),
|
||||||
enableSelection: true
|
enableSelection: true
|
||||||
}}
|
}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user