Refactor annotation tools and implement quality choice annotation feature

- Updated the annotation label from "bewertet" to "annotiert" in the HomePage component.
- Removed the SingleChoiceView component and replaced it with a new QualityChoiceEntryView component for handling quality choice annotations.
- Introduced QualityChoiceView component to manage the flow of quality choice annotations, including navigation and progress tracking.
- Updated EditableExperimentHeader to default to 'quality-choice' annotation tool.
- Added unique index for annotations in the database schema to prevent duplicate entries.
- Enhanced WaveformPlayer to support audio playback state management.
This commit is contained in:
averel10
2026-03-20 10:01:20 +01:00
parent ea7c75c523
commit f26a0a7906
12 changed files with 1070 additions and 224 deletions

View File

@@ -9,7 +9,9 @@ interface EditableExperimentHeaderProps {
}
const ANNOTATION_TOOLS = [
{ value: 'single-choice', label: 'Single Choice' },
{ value: 'quality-choice', label: 'Quality Choice' },
{ value: 'binary', label: 'Binary' },
// Future tools can be added here
];
export default function EditableExperimentHeader({
@@ -18,7 +20,7 @@ export default function EditableExperimentHeader({
const [isEditing, setIsEditing] = useState(false);
const [name, setName] = useState(experiment.name);
const [description, setDescription] = useState(experiment.description || '');
const [annotationTool, setAnnotationTool] = useState(experiment.annotationTool || 'single-choice');
const [annotationTool, setAnnotationTool] = useState(experiment.annotationTool || 'quality-choice');
const [published, setPublished] = useState(experiment.published || false);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -49,7 +51,7 @@ export default function EditableExperimentHeader({
function handleCancel() {
setName(experiment.name);
setAnnotationTool(experiment.annotationTool || 'single-choice');
setAnnotationTool(experiment.annotationTool || 'quality-choice');
setPublished(experiment.published || false);
setDescription(experiment.description || '');
setError(null);