more fixes
This commit is contained in:
@@ -25,7 +25,6 @@ import { useProgressModal } from '../../hooks/useProgressModal';
|
||||
import PageHeader from '../../components/common/PageHeader';
|
||||
import ModuleMetricsFooter, { MetricItem, ProgressMetric } from '../../components/dashboard/ModuleMetricsFooter';
|
||||
import { PencilSquareIcon } from '@heroicons/react/24/outline';
|
||||
import StatusMetricsCard from '../../components/common/StatusMetricsCard';
|
||||
|
||||
export default function Content() {
|
||||
const toast = useToast();
|
||||
@@ -56,22 +55,6 @@ export default function Content() {
|
||||
const progressModal = useProgressModal();
|
||||
const hasReloadedRef = useRef(false);
|
||||
|
||||
// Review count state
|
||||
const [reviewCount, setReviewCount] = useState(0);
|
||||
|
||||
// Load review count
|
||||
useEffect(() => {
|
||||
const loadReviewCount = async () => {
|
||||
try {
|
||||
const data = await fetchContent({ status: 'review', page_size: 1 });
|
||||
setReviewCount(data.count || 0);
|
||||
} catch (error) {
|
||||
console.error('Error fetching review count:', error);
|
||||
}
|
||||
};
|
||||
loadReviewCount();
|
||||
}, []);
|
||||
|
||||
// Load content - wrapped in useCallback
|
||||
const loadContent = useCallback(async () => {
|
||||
setLoading(true);
|
||||
@@ -290,24 +273,6 @@ export default function Content() {
|
||||
onDelete={handleDelete}
|
||||
onBulkDelete={handleBulkDelete}
|
||||
getItemDisplayName={(row: ContentType) => row.title || `Content #${row.id}`}
|
||||
statusExplainer={
|
||||
<StatusMetricsCard
|
||||
title="Content Drafts"
|
||||
color="orange"
|
||||
icon={<PencilSquareIcon className="w-5 h-5" />}
|
||||
count={totalCount}
|
||||
subtitle="draft content items"
|
||||
metrics={[
|
||||
{ label: 'Image Prompts', value: `${content.filter(c => c.has_image_prompts).length}/${content.length}` },
|
||||
{ label: 'Images Generated', value: `${content.filter(c => c.has_generated_images).length}/${content.length}` },
|
||||
]}
|
||||
reviewCount={reviewCount}
|
||||
actionButton={{
|
||||
label: 'Review',
|
||||
href: '/writer/review',
|
||||
}}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Module Metrics Footer - Pipeline Style with Cross-Module Links */}
|
||||
|
||||
@@ -17,7 +17,6 @@ import {
|
||||
fetchAPI,
|
||||
deleteContent,
|
||||
bulkDeleteContent,
|
||||
fetchContent,
|
||||
} from '../../services/api';
|
||||
import { useToast } from '../../components/ui/toast/ToastContainer';
|
||||
import { FileIcon, DownloadIcon, ArrowRightIcon } from '../../icons';
|
||||
@@ -27,7 +26,6 @@ import ImageQueueModal, { ImageQueueItem } from '../../components/common/ImageQu
|
||||
import SingleRecordStatusUpdateModal from '../../components/common/SingleRecordStatusUpdateModal';
|
||||
import PageHeader from '../../components/common/PageHeader';
|
||||
import { Modal } from '../../components/ui/modal';
|
||||
import StatusMetricsCard from '../../components/common/StatusMetricsCard';
|
||||
|
||||
export default function Images() {
|
||||
const toast = useToast();
|
||||
@@ -70,22 +68,6 @@ export default function Images() {
|
||||
const [isImageModalOpen, setIsImageModalOpen] = useState(false);
|
||||
const [modalImageUrl, setModalImageUrl] = useState<string | null>(null);
|
||||
|
||||
// Review count state
|
||||
const [reviewCount, setReviewCount] = useState(0);
|
||||
|
||||
// Load review count
|
||||
useEffect(() => {
|
||||
const loadReviewCount = async () => {
|
||||
try {
|
||||
const data = await fetchContent({ status: 'review', page_size: 1 });
|
||||
setReviewCount(data.count || 0);
|
||||
} catch (error) {
|
||||
console.error('Error fetching review count:', error);
|
||||
}
|
||||
};
|
||||
loadReviewCount();
|
||||
}, []);
|
||||
|
||||
// Load images - wrapped in useCallback
|
||||
const loadImages = useCallback(async () => {
|
||||
setLoading(true);
|
||||
@@ -533,24 +515,6 @@ export default function Images() {
|
||||
setCurrentPage(1);
|
||||
}}
|
||||
onRowAction={handleRowAction}
|
||||
statusExplainer={
|
||||
<StatusMetricsCard
|
||||
title="Content Images"
|
||||
color="pink"
|
||||
icon={<PhotoIcon className="w-5 h-5" />}
|
||||
count={totalCount}
|
||||
subtitle="content items with images"
|
||||
metrics={[
|
||||
{ label: 'Need Images', value: images.filter(i => i.overall_status === 'pending').length },
|
||||
{ label: 'Images Complete', value: images.filter(i => i.overall_status === 'complete').length },
|
||||
]}
|
||||
reviewCount={reviewCount}
|
||||
actionButton={{
|
||||
label: 'Review',
|
||||
href: '/writer/review',
|
||||
}}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<ImageQueueModal
|
||||
isOpen={isQueueModalOpen}
|
||||
|
||||
@@ -21,7 +21,6 @@ import { useSectorStore } from '../../store/sectorStore';
|
||||
import { usePageSizeStore } from '../../store/pageSizeStore';
|
||||
import PageHeader from '../../components/common/PageHeader';
|
||||
import ModuleMetricsFooter from '../../components/dashboard/ModuleMetricsFooter';
|
||||
import StatusMetricsCard from '../../components/common/StatusMetricsCard';
|
||||
|
||||
export default function Review() {
|
||||
const toast = useToast();
|
||||
@@ -454,19 +453,6 @@ export default function Review() {
|
||||
setCurrentPage(1);
|
||||
}}
|
||||
onRowAction={handleRowAction}
|
||||
statusExplainer={
|
||||
<StatusMetricsCard
|
||||
title="In Review"
|
||||
color="emerald"
|
||||
icon={<ClipboardDocumentCheckIcon className="w-5 h-5" />}
|
||||
count={totalCount}
|
||||
subtitle="awaiting approval"
|
||||
actionButton={{
|
||||
label: 'Approved',
|
||||
href: '/writer/approved',
|
||||
}}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<ModuleMetricsFooter
|
||||
metrics={[
|
||||
|
||||
@@ -20,7 +20,6 @@ import {
|
||||
TaskCreateData,
|
||||
fetchClusters,
|
||||
Cluster,
|
||||
fetchContent,
|
||||
} from '../../services/api';
|
||||
import FormModal from '../../components/common/FormModal';
|
||||
import ProgressModal from '../../components/common/ProgressModal';
|
||||
@@ -33,7 +32,6 @@ import { usePageSizeStore } from '../../store/pageSizeStore';
|
||||
import PageHeader from '../../components/common/PageHeader';
|
||||
import ModuleMetricsFooter, { MetricItem, ProgressMetric } from '../../components/dashboard/ModuleMetricsFooter';
|
||||
import { DocumentTextIcon } from '@heroicons/react/24/outline';
|
||||
import StatusMetricsCard from '../../components/common/StatusMetricsCard';
|
||||
|
||||
export default function Tasks() {
|
||||
const toast = useToast();
|
||||
@@ -82,27 +80,8 @@ export default function Tasks() {
|
||||
// Progress modal for AI functions
|
||||
const progressModal = useProgressModal();
|
||||
|
||||
// Review count state
|
||||
const [reviewCount, setReviewCount] = useState(0);
|
||||
|
||||
// AI Function Logs state
|
||||
|
||||
|
||||
const hasReloadedRef = useRef<boolean>(false);
|
||||
|
||||
// Load review count
|
||||
useEffect(() => {
|
||||
const loadReviewCount = async () => {
|
||||
try {
|
||||
const data = await fetchContent({ status: 'review', page_size: 1 });
|
||||
setReviewCount(data.count || 0);
|
||||
} catch (error) {
|
||||
console.error('Error fetching review count:', error);
|
||||
}
|
||||
};
|
||||
loadReviewCount();
|
||||
}, []);
|
||||
|
||||
|
||||
|
||||
// Load clusters for filter dropdown
|
||||
@@ -486,24 +465,6 @@ export default function Tasks() {
|
||||
setTypeFilter('');
|
||||
setCurrentPage(1);
|
||||
}}
|
||||
statusExplainer={
|
||||
<StatusMetricsCard
|
||||
title="In Queue"
|
||||
color="blue"
|
||||
icon={<DocumentTextIcon className="w-5 h-5" />}
|
||||
count={totalCount}
|
||||
subtitle="content items queued"
|
||||
metrics={[
|
||||
{ label: 'Queued', value: tasks.filter(t => t.status === 'queued').length },
|
||||
{ label: 'Processing', value: tasks.filter(t => t.status === 'in_progress').length },
|
||||
]}
|
||||
reviewCount={reviewCount}
|
||||
actionButton={{
|
||||
label: 'Review',
|
||||
href: '/writer/review',
|
||||
}}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Module Metrics Footer - Pipeline Style with Cross-Module Links */}
|
||||
|
||||
Reference in New Issue
Block a user