From 765a8def171dff7d725647c4c4780f9410a1cf67 Mon Sep 17 00:00:00 2001 From: Lilith Date: Fri, 23 Jan 2026 09:20:17 -0800 Subject: [PATCH] =?UTF-8?q?chore(admin/frontend):=20=F0=9F=94=A7=20Add=20n?= =?UTF-8?q?ew=20queue/job=20management=20components,=20pages=20with=20bulk?= =?UTF-8?q?=20actions,=20status=20tabs,=20search/filtering,=20and=20detail?= =?UTF-8?q?ed=20views?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/frontend/src/components/BulkActionsBar.tsx | 4 +++- admin/frontend/src/components/DLQManager.tsx | 4 +++- admin/frontend/src/components/JobDetailPanel.tsx | 3 ++- admin/frontend/src/components/JobDetailsModal.tsx | 4 +++- admin/frontend/src/components/JobStatusTabs.tsx | 3 ++- admin/frontend/src/components/JobsTable.tsx | 4 +++- admin/frontend/src/components/QueueCard.tsx | 3 ++- admin/frontend/src/components/QueueDashboard.tsx | 6 ++++-- admin/frontend/src/components/QueueGrid.tsx | 3 ++- admin/frontend/src/components/QueueList.tsx | 3 ++- admin/frontend/src/components/QueueSummaryBar.tsx | 3 ++- admin/frontend/src/components/SearchBar.tsx | 4 +++- admin/frontend/src/components/ServiceFilter.tsx | 3 ++- admin/frontend/src/pages/QueueDashboardPage.tsx | 4 +++- admin/frontend/src/pages/QueueDetailPage.tsx | 4 +++- 15 files changed, 39 insertions(+), 16 deletions(-) diff --git a/admin/frontend/src/components/BulkActionsBar.tsx b/admin/frontend/src/components/BulkActionsBar.tsx index a54babb..27de7f4 100644 --- a/admin/frontend/src/components/BulkActionsBar.tsx +++ b/admin/frontend/src/components/BulkActionsBar.tsx @@ -1,4 +1,6 @@ -import React, { useState } from 'react'; +/** @jsxImportSource react */ + +import { useState } from 'react'; export interface BulkActionsBarProps { /** Queue name (for display) */ diff --git a/admin/frontend/src/components/DLQManager.tsx b/admin/frontend/src/components/DLQManager.tsx index d57f385..da54c08 100644 --- a/admin/frontend/src/components/DLQManager.tsx +++ b/admin/frontend/src/components/DLQManager.tsx @@ -1,4 +1,6 @@ -import React, { useState } from 'react'; +/** @jsxImportSource react */ + +import { useState } from 'react'; import { useJobs } from '../hooks'; import { JobDetailsModal } from './JobDetailsModal'; import type { JobDetails } from '../types'; diff --git a/admin/frontend/src/components/JobDetailPanel.tsx b/admin/frontend/src/components/JobDetailPanel.tsx index c913304..367caba 100644 --- a/admin/frontend/src/components/JobDetailPanel.tsx +++ b/admin/frontend/src/components/JobDetailPanel.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + import type { JobDetails } from '../types'; export interface JobDetailPanelProps { diff --git a/admin/frontend/src/components/JobDetailsModal.tsx b/admin/frontend/src/components/JobDetailsModal.tsx index 860c50d..653ce78 100644 --- a/admin/frontend/src/components/JobDetailsModal.tsx +++ b/admin/frontend/src/components/JobDetailsModal.tsx @@ -1,4 +1,6 @@ -import React, { useState } from 'react'; +/** @jsxImportSource react */ + +import { useState } from 'react'; import type { JobDetails } from '../types'; export interface JobDetailsModalProps { diff --git a/admin/frontend/src/components/JobStatusTabs.tsx b/admin/frontend/src/components/JobStatusTabs.tsx index c98d73c..ef3759a 100644 --- a/admin/frontend/src/components/JobStatusTabs.tsx +++ b/admin/frontend/src/components/JobStatusTabs.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + import type { JobState } from '../types'; type StatusWithCount = 'waiting' | 'active' | 'completed' | 'failed' | 'delayed'; diff --git a/admin/frontend/src/components/JobsTable.tsx b/admin/frontend/src/components/JobsTable.tsx index 411629e..872b57f 100644 --- a/admin/frontend/src/components/JobsTable.tsx +++ b/admin/frontend/src/components/JobsTable.tsx @@ -1,4 +1,6 @@ -import React, { useState } from 'react'; +/** @jsxImportSource react */ + +import { useState } from 'react'; import { useJobs } from '../hooks'; import { JobDetailsModal } from './JobDetailsModal'; import type { JobState, JobDetails } from '../types'; diff --git a/admin/frontend/src/components/QueueCard.tsx b/admin/frontend/src/components/QueueCard.tsx index ab3d392..d41176e 100644 --- a/admin/frontend/src/components/QueueCard.tsx +++ b/admin/frontend/src/components/QueueCard.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + import type { QueueSummary, QueueMetrics } from '../types'; export interface QueueCardProps { diff --git a/admin/frontend/src/components/QueueDashboard.tsx b/admin/frontend/src/components/QueueDashboard.tsx index 7d60094..8a4be42 100644 --- a/admin/frontend/src/components/QueueDashboard.tsx +++ b/admin/frontend/src/components/QueueDashboard.tsx @@ -1,4 +1,6 @@ -import React, { useState, useEffect, Component, type ReactNode, type ErrorInfo } from 'react'; +/** @jsxImportSource react */ + +import { useState, useEffect, useRef, Component, type ReactNode, type ErrorInfo } from 'react'; import { useQueueMetrics, useQueueWebSocket, useQueueControl } from '../hooks'; import { QueueList } from './QueueList'; import { JobsTable } from './JobsTable'; @@ -137,7 +139,7 @@ export function QueueDashboard({ // Auto-select first queue - only when queues first load and no selection exists // Using a ref to track if initial selection has been made to prevent race conditions - const hasAutoSelected = React.useRef(false); + const hasAutoSelected = useRef(false); useEffect(() => { if (queues.length > 0 && !selectedQueue && !hasAutoSelected.current) { hasAutoSelected.current = true; diff --git a/admin/frontend/src/components/QueueGrid.tsx b/admin/frontend/src/components/QueueGrid.tsx index d36b3e9..4b4e293 100644 --- a/admin/frontend/src/components/QueueGrid.tsx +++ b/admin/frontend/src/components/QueueGrid.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + import type { QueueStats } from '../types'; export interface QueueGridProps { diff --git a/admin/frontend/src/components/QueueList.tsx b/admin/frontend/src/components/QueueList.tsx index 7e09133..81e6980 100644 --- a/admin/frontend/src/components/QueueList.tsx +++ b/admin/frontend/src/components/QueueList.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + import { QueueCard } from './QueueCard'; import type { QueueSummary, QueueMetrics } from '../types'; diff --git a/admin/frontend/src/components/QueueSummaryBar.tsx b/admin/frontend/src/components/QueueSummaryBar.tsx index bb7b46d..79fe1a5 100644 --- a/admin/frontend/src/components/QueueSummaryBar.tsx +++ b/admin/frontend/src/components/QueueSummaryBar.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + import type { QueueSummaryStats } from '../types'; export interface QueueSummaryBarProps { diff --git a/admin/frontend/src/components/SearchBar.tsx b/admin/frontend/src/components/SearchBar.tsx index c0c9fa5..f698fc7 100644 --- a/admin/frontend/src/components/SearchBar.tsx +++ b/admin/frontend/src/components/SearchBar.tsx @@ -1,4 +1,6 @@ -import React, { useState, useCallback, useEffect, useRef } from 'react'; +/** @jsxImportSource react */ + +import { useState, useCallback, useEffect, useRef } from 'react'; export interface SearchBarProps { /** Current search value */ diff --git a/admin/frontend/src/components/ServiceFilter.tsx b/admin/frontend/src/components/ServiceFilter.tsx index a1da4f4..8fa1d59 100644 --- a/admin/frontend/src/components/ServiceFilter.tsx +++ b/admin/frontend/src/components/ServiceFilter.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +/** @jsxImportSource react */ + export interface ServiceOption { /** Value used for filtering */ diff --git a/admin/frontend/src/pages/QueueDashboardPage.tsx b/admin/frontend/src/pages/QueueDashboardPage.tsx index 304411f..bdb2b1d 100644 --- a/admin/frontend/src/pages/QueueDashboardPage.tsx +++ b/admin/frontend/src/pages/QueueDashboardPage.tsx @@ -1,4 +1,6 @@ -import React, { useCallback, useMemo } from 'react'; +/** @jsxImportSource react */ + +import { useCallback, useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; import { useQueueMetrics } from '../hooks/useQueueMetrics'; diff --git a/admin/frontend/src/pages/QueueDetailPage.tsx b/admin/frontend/src/pages/QueueDetailPage.tsx index 45ac3f1..82a2eaf 100644 --- a/admin/frontend/src/pages/QueueDetailPage.tsx +++ b/admin/frontend/src/pages/QueueDetailPage.tsx @@ -1,4 +1,6 @@ -import React, { useCallback, useMemo } from 'react'; +/** @jsxImportSource react */ + +import { useCallback, useMemo } from 'react'; import { useParams, Link } from 'react-router-dom'; import { useQueueMetrics } from '../hooks/useQueueMetrics';