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 && (
)}
);
}