import { useState, useEffect } from 'react' import { api } from '../utils/api' import TrainingTypeSelect from './TrainingTypeSelect' /** * BulkCategorize - UI for categorizing existing activities without training type * * Shows uncategorized activities grouped by activity_type, * allows bulk assignment of training type to all activities of same type. */ export default function BulkCategorize({ onComplete }) { const [uncategorized, setUncategorized] = useState([]) const [loading, setLoading] = useState(true) const [assignments, setAssignments] = useState({}) const [saving, setSaving] = useState(null) useEffect(() => { loadUncategorized() }, []) const loadUncategorized = () => { setLoading(true) api.listUncategorizedActivities() .then(data => { setUncategorized(data) setLoading(false) }) .catch(err => { console.error('Failed to load uncategorized activities:', err) setLoading(false) }) } const handleAssignment = (activityType, typeId, category, subcategory) => { setAssignments(prev => ({ ...prev, [activityType]: { training_type_id: typeId, training_category: category, training_subcategory: subcategory } })) } const handleSave = async (activityType) => { const assignment = assignments[activityType] if (!assignment || !assignment.training_type_id) { alert('Bitte wähle einen Trainingstyp aus') return } setSaving(activityType) try { const result = await api.bulkCategorizeActivities({ activity_type: activityType, ...assignment }) // Remove from list setUncategorized(prev => prev.filter(u => u.activity_type !== activityType)) setAssignments(prev => { const newAssignments = { ...prev } delete newAssignments[activityType] return newAssignments }) // Show success message console.log(`✓ ${result.updated} activities categorized`) } catch (err) { console.error('Failed to categorize:', err) alert('Kategorisierung fehlgeschlagen: ' + err.message) } finally { setSaving(null) } } if (loading) { return (