diff --git a/src/features/dataset/DatasetClassList.tsx b/src/features/dataset/DatasetClassList.tsx index 2a16dbe..10b3f2a 100644 --- a/src/features/dataset/DatasetClassList.tsx +++ b/src/features/dataset/DatasetClassList.tsx @@ -2,7 +2,7 @@ import { useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { api, endpoints } from '../../api' import { getClassColor, FALLBACK_CLASS_NAMES } from '../../class-colors' -import type { DetectionClass, ClassDistributionItem } from '../../types' +import type { DetectionClass } from '../../types' const FALLBACK_CLASSES: DetectionClass[] = FALLBACK_CLASS_NAMES.map((name, i) => ({ id: i + 1, @@ -16,12 +16,12 @@ const FALLBACK_CLASSES: DetectionClass[] = FALLBACK_CLASS_NAMES.map((name, i) => interface DatasetClassListProps { selectedClassNum: number onSelect: (classNum: number) => void + counts: Record } -export default function DatasetClassList({ selectedClassNum, onSelect }: DatasetClassListProps) { +export default function DatasetClassList({ selectedClassNum, onSelect, counts }: DatasetClassListProps) { const { t } = useTranslation() const [classes, setClasses] = useState([]) - const [counts, setCounts] = useState>({}) useEffect(() => { api.get(endpoints.annotations.classes()) @@ -29,20 +29,12 @@ export default function DatasetClassList({ selectedClassNum, onSelect }: Dataset .catch(() => setClasses(FALLBACK_CLASSES)) }, []) - useEffect(() => { - api.get(endpoints.annotations.datasetClassDistribution()) - .then(data => { - const map: Record = {} - for (const d of data) map[d.classNum] = d.count - setCounts(map) - }) - .catch(() => {}) - }, []) - const regularClasses = useMemo(() => classes.filter(c => c.photoMode === 0), [classes]) useEffect(() => { const handler = (e: KeyboardEvent) => { + const t = e.target as HTMLElement | null + if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return const num = parseInt(e.key) if (num >= 1 && num <= 9) { const cls = regularClasses[num - 1] diff --git a/src/features/dataset/DatasetFilterBar.tsx b/src/features/dataset/DatasetFilterBar.tsx index 43e61de..5a2c80f 100644 --- a/src/features/dataset/DatasetFilterBar.tsx +++ b/src/features/dataset/DatasetFilterBar.tsx @@ -29,7 +29,7 @@ export default function DatasetFilterBar({ const STATUS_OPTIONS = [ { value: null, - label: t('dataset.status.none'), + label: t('dataset.status.all'), tone: 'muted' as const, dot: 'var(--text-muted)', }, diff --git a/src/features/dataset/DatasetLeftPanel.tsx b/src/features/dataset/DatasetLeftPanel.tsx index 532ee77..8078858 100644 --- a/src/features/dataset/DatasetLeftPanel.tsx +++ b/src/features/dataset/DatasetLeftPanel.tsx @@ -4,6 +4,7 @@ import DatasetClassList from './DatasetClassList' interface DatasetLeftPanelProps { selectedClassNum: number onSelectClass: (n: number) => void + classCounts: Record objectsOnly: boolean onObjectsOnlyChange: (v: boolean) => void search: string @@ -15,6 +16,7 @@ interface DatasetLeftPanelProps { export default function DatasetLeftPanel({ selectedClassNum, onSelectClass, + classCounts, objectsOnly, onObjectsOnlyChange, search, @@ -28,7 +30,11 @@ export default function DatasetLeftPanel({