UI intagration into header top section
This commit is contained in:
@@ -122,7 +122,9 @@ export const OrchestratorPage: React.FC = () => {
|
||||
};
|
||||
|
||||
const { pipelineSources, setPipelineSources, toggleSource } = usePipelineSources();
|
||||
const { jobs, stats, isLoading, isPipelineRunning, setIsPipelineRunning, loadJobs } = useOrchestratorData();
|
||||
const { jobs, stats, settings, isLoading, isPipelineRunning, setIsPipelineRunning, loadJobs } = useOrchestratorData();
|
||||
|
||||
const showSponsorInfo = settings?.showSponsorInfo ?? true;
|
||||
|
||||
const activeJobs = useFilteredJobs(jobs, activeTab, sourceFilter, searchQuery, sort);
|
||||
const counts = useMemo(() => getJobCounts(jobs), [jobs]);
|
||||
@@ -276,6 +278,7 @@ export const OrchestratorPage: React.FC = () => {
|
||||
onSelectJobId={handleSelectJobId}
|
||||
onJobUpdated={loadJobs}
|
||||
onSetActiveTab={setActiveTab}
|
||||
showSponsorInfo={showSponsorInfo}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -41,6 +41,7 @@ interface JobDetailPanelProps {
|
||||
onSelectJobId: (jobId: string | null) => void;
|
||||
onJobUpdated: () => Promise<void>;
|
||||
onSetActiveTab: (tab: FilterTab) => void;
|
||||
showSponsorInfo?: boolean;
|
||||
}
|
||||
|
||||
export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
|
||||
@@ -50,6 +51,7 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
|
||||
onSelectJobId,
|
||||
onJobUpdated,
|
||||
onSetActiveTab,
|
||||
showSponsorInfo,
|
||||
}) => {
|
||||
const [detailTab, setDetailTab] = useState<"overview" | "tailoring" | "description">("overview");
|
||||
const [isEditingDescription, setIsEditingDescription] = useState(false);
|
||||
@@ -233,6 +235,7 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
|
||||
job={selectedJob}
|
||||
onJobUpdated={onJobUpdated}
|
||||
onJobMoved={handleJobMoved}
|
||||
showSponsorInfo={showSponsorInfo}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -254,6 +257,7 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
|
||||
setIsEditingDescription(true);
|
||||
}, 50);
|
||||
}}
|
||||
showSponsorInfo={showSponsorInfo}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -275,6 +279,7 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
|
||||
await api.checkSponsor(selectedJob.id);
|
||||
await onJobUpdated();
|
||||
}}
|
||||
showSponsorInfo={showSponsorInfo}
|
||||
/>
|
||||
|
||||
<div className="flex flex-wrap items-center gap-1.5">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
|
||||
import type { Job, JobStatus } from "../../../shared/types";
|
||||
import type { Job, JobStatus, AppSettings } from "../../../shared/types";
|
||||
import * as api from "../../api";
|
||||
|
||||
const initialStats: Record<JobStatus, number> = {
|
||||
@@ -16,15 +16,20 @@ const initialStats: Record<JobStatus, number> = {
|
||||
export const useOrchestratorData = () => {
|
||||
const [jobs, setJobs] = useState<Job[]>([]);
|
||||
const [stats, setStats] = useState<Record<JobStatus, number>>(initialStats);
|
||||
const [settings, setSettings] = useState<AppSettings | null>(null);
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [isPipelineRunning, setIsPipelineRunning] = useState(false);
|
||||
|
||||
const loadJobs = useCallback(async () => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const data = await api.getJobs();
|
||||
setJobs(data.jobs);
|
||||
setStats(data.byStatus);
|
||||
const [jobsData, settingsData] = await Promise.all([
|
||||
api.getJobs(),
|
||||
api.getSettings(),
|
||||
]);
|
||||
setJobs(jobsData.jobs);
|
||||
setStats(jobsData.byStatus);
|
||||
setSettings(settingsData);
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : "Failed to load jobs";
|
||||
toast.error(message);
|
||||
@@ -54,5 +59,5 @@ export const useOrchestratorData = () => {
|
||||
return () => clearInterval(interval);
|
||||
}, [loadJobs, checkPipelineStatus]);
|
||||
|
||||
return { jobs, stats, isLoading, isPipelineRunning, setIsPipelineRunning, loadJobs, checkPipelineStatus };
|
||||
return { jobs, stats, settings, isLoading, isPipelineRunning, setIsPipelineRunning, loadJobs, checkPipelineStatus };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user