diff --git a/src/frontend/src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx b/src/frontend/src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx
index 32d11cdb7f..0e20cfad7e 100644
--- a/src/frontend/src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx
+++ b/src/frontend/src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx
@@ -7,21 +7,15 @@ import { FactCollection } from '../../../../components/settings/FactCollection';
import { ApiEndpoints } from '../../../../enums/ApiEndpoints';
import { Loadable } from '../../../../functions/loading';
import { useInstance } from '../../../../hooks/UseInstance';
-
-const PendingTasksTable = Loadable(
- lazy(() => import('../../../../tables/settings/PendingTasksTable'))
-);
+import FailedTasksTable from '../../../../tables/settings/FailedTasksTable';
+import PendingTasksTable from '../../../../tables/settings/PendingTasksTable';
const ScheduledTasksTable = Loadable(
lazy(() => import('../../../../tables/settings/ScheduledTasksTable'))
);
-const FailedTasksTable = Loadable(
- lazy(() => import('../../../../tables/settings/FailedTasksTable'))
-);
-
export default function TaskManagementPanel() {
- const { instance: taskInfo } = useInstance({
+ const { instance: taskInfo, refreshInstance: refreshTaskInfo } = useInstance({
endpoint: ApiEndpoints.task_overview,
hasPrimaryKey: false,
refetchOnMount: true,
@@ -51,7 +45,7 @@ export default function TaskManagementPanel() {
{t`Pending Tasks`}
-
+
@@ -67,7 +61,7 @@ export default function TaskManagementPanel() {
{t`Failed Tasks`}
-
+
diff --git a/src/frontend/src/tables/settings/FailedTasksTable.tsx b/src/frontend/src/tables/settings/FailedTasksTable.tsx
index c7f1117388..3fba322a2e 100644
--- a/src/frontend/src/tables/settings/FailedTasksTable.tsx
+++ b/src/frontend/src/tables/settings/FailedTasksTable.tsx
@@ -1,6 +1,8 @@
import { t } from '@lingui/macro';
import { Drawer, Text } from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
+import { hideNotification, showNotification } from '@mantine/notifications';
+import { IconExclamationCircle } from '@tabler/icons-react';
import { useMemo, useState } from 'react';
import { StylishText } from '../../components/items/StylishText';
@@ -11,7 +13,11 @@ import { useUserState } from '../../states/UserState';
import { TableColumn } from '../Column';
import { InvenTreeTable } from '../InvenTreeTable';
-export default function FailedTasksTable() {
+export default function FailedTasksTable({
+ onRecordsUpdated
+}: {
+ onRecordsUpdated: () => void;
+}) {
const table = useTable('tasks-failed');
const user = useUserState();
@@ -73,10 +79,22 @@ export default function FailedTasksTable() {
columns={columns}
props={{
enableBulkDelete: user.isStaff(),
+ afterBulkDelete: onRecordsUpdated,
enableSelection: true,
onRowClick: (row: any) => {
- setError(row.result);
- open();
+ if (row.result) {
+ 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:
+ });
+ }
}
}}
/>
diff --git a/src/frontend/src/tables/settings/PendingTasksTable.tsx b/src/frontend/src/tables/settings/PendingTasksTable.tsx
index c82731cf62..b91e7167af 100644
--- a/src/frontend/src/tables/settings/PendingTasksTable.tsx
+++ b/src/frontend/src/tables/settings/PendingTasksTable.tsx
@@ -8,7 +8,11 @@ import { useUserState } from '../../states/UserState';
import { TableColumn } from '../Column';
import { InvenTreeTable } from '../InvenTreeTable';
-export default function PendingTasksTable() {
+export default function PendingTasksTable({
+ onRecordsUpdated
+}: {
+ onRecordsUpdated: () => void;
+}) {
const table = useTable('tasks-pending');
const user = useUserState();
@@ -50,6 +54,7 @@ export default function PendingTasksTable() {
tableState={table}
columns={columns}
props={{
+ afterBulkDelete: onRecordsUpdated,
enableBulkDelete: user.isStaff(),
enableSelection: true
}}