/** * Queue Management Demo * Shows scheduler controls and queue items list */ import React, { useState, useEffect } from 'react' export default function QueueManagementDemo() { const [schedulerStatus, setSchedulerStatus] = useState('idle') const [progress, setProgress] = useState(0) const queueItems = [ { id: '1', status: 'completed', issueId: 'ISSUE-1', sessionKey: 'session-1' }, { id: '2', status: 'executing', issueId: 'ISSUE-2', sessionKey: 'session-2' }, { id: '3', status: 'pending', issueId: 'ISSUE-3', sessionKey: null }, { id: '4', status: 'pending', issueId: 'ISSUE-4', sessionKey: null }, { id: '5', status: 'blocked', issueId: 'ISSUE-5', sessionKey: null }, ] const statusConfig = { idle: { label: 'Idle', color: 'bg-gray-500/20 text-gray-600 border-gray-500' }, running: { label: 'Running', color: 'bg-green-500/20 text-green-600 border-green-500' }, paused: { label: 'Paused', color: 'bg-amber-500/20 text-amber-600 border-amber-500' }, } const itemStatusConfig = { completed: { icon: '✓', color: 'text-green-500', label: 'Completed' }, executing: { icon: '▶', color: 'text-blue-500', label: 'Executing' }, pending: { icon: '○', color: 'text-gray-400', label: 'Pending' }, blocked: { icon: '✕', color: 'text-red-500', label: 'Blocked' }, failed: { icon: '!', color: 'text-red-500', label: 'Failed' }, } useEffect(() => { if (schedulerStatus === 'running') { const interval = setInterval(() => { setProgress((p) => (p >= 100 ? 0 : p + 10)) }, 500) return () => clearInterval(interval) } }, [schedulerStatus]) const handleStart = () => { if (schedulerStatus === 'idle' || schedulerStatus === 'paused') { setSchedulerStatus('running') } } const handlePause = () => { if (schedulerStatus === 'running') { setSchedulerStatus('paused') } } const handleStop = () => { setSchedulerStatus('idle') setProgress(0) } const currentConfig = statusConfig[schedulerStatus as keyof typeof statusConfig] return (
{/* Header */}

Queue Management

Manage issue execution queue

{/* Scheduler Status Bar */}
{currentConfig.label}
{queueItems.filter((i) => i.status === 'completed').length}/{queueItems.length} items 2/2 concurrent
{/* Progress Bar */} {schedulerStatus === 'running' && (
{progress}% complete
)} {/* Scheduler Controls */}
{(schedulerStatus === 'idle' || schedulerStatus === 'paused') && ( )} {schedulerStatus === 'running' && ( )} {schedulerStatus !== 'idle' && ( )}
{/* Queue Items List */}

Queue Items

{queueItems.map((item) => { const config = itemStatusConfig[item.status as keyof typeof itemStatusConfig] return (
{config.icon}
{item.issueId} {config.label}
{item.sessionKey && (
Session: {item.sessionKey}
)}
{item.status === 'executing' && (
)}
) })}
) }