chore(admin/frontend): 🔧 Add new queue/job management components, pages with bulk actions, status tabs, search/filtering, and detailed views
This commit is contained in:
parent
47c9fdaca2
commit
765a8def17
15 changed files with 39 additions and 16 deletions
|
|
@ -1,4 +1,6 @@
|
|||
import React, { useState } from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import { useState } from 'react';
|
||||
|
||||
export interface BulkActionsBarProps {
|
||||
/** Queue name (for display) */
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import type { JobDetails } from '../types';
|
||||
|
||||
export interface JobDetailPanelProps {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import React, { useState } from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import { useState } from 'react';
|
||||
import type { JobDetails } from '../types';
|
||||
|
||||
export interface JobDetailsModalProps {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import type { JobState } from '../types';
|
||||
|
||||
type StatusWithCount = 'waiting' | 'active' | 'completed' | 'failed' | 'delayed';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import type { QueueSummary, QueueMetrics } from '../types';
|
||||
|
||||
export interface QueueCardProps {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import type { QueueStats } from '../types';
|
||||
|
||||
export interface QueueGridProps {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import { QueueCard } from './QueueCard';
|
||||
import type { QueueSummary, QueueMetrics } from '../types';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
import type { QueueSummaryStats } from '../types';
|
||||
|
||||
export interface QueueSummaryBarProps {
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
/** @jsxImportSource react */
|
||||
|
||||
|
||||
export interface ServiceOption {
|
||||
/** Value used for filtering */
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue