import Link from 'next/link'; import { Eye, Trash2, Pen, Play, Pause, ExternalLink, Upload } from 'lucide-react'; import { Button } from '@headlessui/react'; import { openConfirm } from '@/components/ConfirmModal'; import { startJob, stopJob, deleteJob, getAvaliableJobActions } from '@/utils/jobs'; import { JobConfig, JobRecord } from '@/types'; interface JobActionBarProps { job: JobRecord; onRefresh?: () => void; afterDelete?: () => void; hideView?: boolean; className?: string; } export default function JobActionBar({ job, onRefresh, afterDelete, className, hideView }: JobActionBarProps) { const { canStart, canStop, canDelete, canEdit } = getAvaliableJobActions(job); // Check if this is an HF Job and extract monitoring URL let jobConfig: JobConfig | null = null; let hfJobUrl: string | null = null; let isHFJob = false; let hfJobSubmitted = false; try { jobConfig = JSON.parse(job.job_config); isHFJob = jobConfig?.is_hf_job || false; hfJobSubmitted = !!jobConfig?.hf_job_id; hfJobUrl = jobConfig?.hf_job_url; } catch (e) { // Ignore parsing errors } if (!afterDelete) afterDelete = onRefresh; return (
{isHFJob && !hfJobSubmitted && ( )} {canStart && !isHFJob && ( )} {canStop && !isHFJob && ( )} {!hideView && ( )} {hfJobUrl && ( )} {canEdit && ( )}
); }