feat: remove task update functionality from SchedulersTable and clean up related code
Some checks failed
Frontend CI / lint (push) Failing after 18s
Frontend CI / build (push) Has been skipped

This commit is contained in:
JSC
2025-09-21 18:48:05 +02:00
parent dc1124dff6
commit 8945eb6ad6
2 changed files with 15 additions and 57 deletions

View File

@@ -5,7 +5,6 @@ import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
DropdownMenuItem, DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger, DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu' } from '@/components/ui/dropdown-menu'
import { formatDate } from '@/utils/format-date' import { formatDate } from '@/utils/format-date'
@@ -20,8 +19,6 @@ import {
import { import {
CalendarClock, CalendarClock,
MoreHorizontal, MoreHorizontal,
Pause,
Play,
Square, Square,
} from 'lucide-react' } from 'lucide-react'
import { useState } from 'react' import { useState } from 'react'
@@ -29,36 +26,26 @@ import { toast } from 'sonner'
interface SchedulersTableProps { interface SchedulersTableProps {
tasks: ScheduledTask[] tasks: ScheduledTask[]
onTaskUpdated?: (task: ScheduledTask) => void
onTaskDeleted?: (taskId: number) => void onTaskDeleted?: (taskId: number) => void
} }
export function SchedulersTable({ tasks, onTaskUpdated, onTaskDeleted }: SchedulersTableProps) { export function SchedulersTable({ tasks, onTaskDeleted }: SchedulersTableProps) {
const [loadingActions, setLoadingActions] = useState<Record<number, boolean>>({}) const [loadingActions, setLoadingActions] = useState<Record<number, boolean>>({})
const handleToggleActive = async (task: ScheduledTask) => {
if (loadingActions[task.id]) return
try {
setLoadingActions(prev => ({ ...prev, [task.id]: true }))
const updatedTask = await schedulersService.updateTask(task.id, {
is_active: !task.is_active,
})
onTaskUpdated?.(updatedTask)
toast.success(`Task ${task.is_active ? 'paused' : 'resumed'} successfully`)
} catch (error) {
const message = error instanceof Error ? error.message : 'Failed to update task'
toast.error(message)
} finally {
setLoadingActions(prev => ({ ...prev, [task.id]: false }))
}
}
const handleCancelTask = async (task: ScheduledTask) => { const handleCancelTask = async (task: ScheduledTask) => {
if (loadingActions[task.id]) return if (loadingActions[task.id]) return
// Confirm deletion
const confirmMessage = `Are you sure you want to delete the task "${task.name}"?${
task.status === 'scheduled' || task.status === 'running'
? '\n\nThis task is currently active and will be stopped immediately.'
: ''
}\n\nThis action cannot be undone.`
if (!confirm(confirmMessage)) {
return
}
try { try {
setLoadingActions(prev => ({ ...prev, [task.id]: true })) setLoadingActions(prev => ({ ...prev, [task.id]: true }))
@@ -85,7 +72,7 @@ export function SchedulersTable({ tasks, onTaskUpdated, onTaskDeleted }: Schedul
return ( return (
<div className="space-y-4"> <div className="space-y-4">
{tasks.map((task) => ( {tasks.map((task) => (
<Card key={task.id} className={task.is_active ? '' : 'opacity-60'}> <Card key={task.id}>
<CardHeader className="pb-3"> <CardHeader className="pb-3">
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="space-y-1"> <div className="space-y-1">
@@ -94,11 +81,6 @@ export function SchedulersTable({ tasks, onTaskUpdated, onTaskDeleted }: Schedul
<Badge variant={getTaskStatusVariant(task.status)}> <Badge variant={getTaskStatusVariant(task.status)}>
{getTaskStatusLabel(task.status)} {getTaskStatusLabel(task.status)}
</Badge> </Badge>
{!task.is_active && (
<Badge variant="outline" className="text-muted-foreground">
Paused
</Badge>
)}
</div> </div>
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
{getTaskTypeLabel(task.task_type)} {getTaskTypeLabel(task.task_type)}
@@ -121,26 +103,8 @@ export function SchedulersTable({ tasks, onTaskUpdated, onTaskDeleted }: Schedul
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end"> <DropdownMenuContent align="end">
<DropdownMenuItem
onClick={() => handleToggleActive(task)}
disabled={task.status === 'completed' || task.status === 'cancelled'}
>
{task.is_active ? (
<>
<Pause className="h-4 w-4 mr-2" />
Pause Task
</>
) : (
<>
<Play className="h-4 w-4 mr-2" />
Resume Task
</>
)}
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem <DropdownMenuItem
onClick={() => handleCancelTask(task)} onClick={() => handleCancelTask(task)}
disabled={task.status === 'completed' || task.status === 'cancelled'}
className="text-destructive focus:text-destructive" className="text-destructive focus:text-destructive"
> >
<Square className="h-4 w-4 mr-2" /> <Square className="h-4 w-4 mr-2" />

View File

@@ -100,11 +100,6 @@ export function SchedulersPage() {
setShowCreateDialog(false) setShowCreateDialog(false)
} }
const handleTaskUpdated = (updatedTask: ScheduledTask) => {
setTasks(prev => prev.map(task =>
task.id === updatedTask.id ? updatedTask : task
))
}
const handleTaskDeleted = (taskId: number) => { const handleTaskDeleted = (taskId: number) => {
setTasks(prev => prev.filter(task => task.id !== taskId)) setTasks(prev => prev.filter(task => task.id !== taskId))
@@ -132,7 +127,6 @@ export function SchedulersPage() {
return ( return (
<SchedulersTable <SchedulersTable
tasks={tasks} tasks={tasks}
onTaskUpdated={handleTaskUpdated}
onTaskDeleted={handleTaskDeleted} onTaskDeleted={handleTaskDeleted}
/> />
) )