import React, { useState } from 'react'; import { useQuery } from '@apollo/client'; import { GET_LAXIMO_CATEGORIES, GET_LAXIMO_UNITS } from '@/lib/graphql'; import { LaximoQuickGroup } from '@/types/laximo'; import UnitsSection from './UnitsSection'; interface CategoriesSectionProps { catalogCode: string; vehicleId: string; ssd?: string; } interface LaximoCategory { quickgroupid: string; // categoryid в API name: string; link: boolean; } const CategoriesSection: React.FC = ({ catalogCode, vehicleId, ssd }) => { const [selectedCategoryId, setSelectedCategoryId] = useState(null); const [selectedCategoryName, setSelectedCategoryName] = useState(''); // Получаем список категорий каталога const { data: categoriesData, loading: categoriesLoading, error: categoriesError } = useQuery<{ laximoCategories: LaximoCategory[] }>( GET_LAXIMO_CATEGORIES, { variables: { catalogCode, vehicleId, ...(ssd && ssd.trim() !== '' && { ssd }) }, skip: !catalogCode || vehicleId === undefined || vehicleId === null, errorPolicy: 'all' } ); const handleCategorySelect = (categoryId: string, categoryName: string) => { console.log('🔍 CategoriesSection: выбрана категория', { categoryId, categoryName, catalogCode, vehicleId, hasSSD: !!ssd, ssdLength: ssd?.length, ssdPreview: ssd ? ssd.substring(0, 50) + '...' : 'отсутствует' }); setSelectedCategoryId(categoryId); setSelectedCategoryName(categoryName); }; const handleBackToCategories = () => { setSelectedCategoryId(null); setSelectedCategoryName(''); }; // Если выбрана категория, показываем узлы этой категории if (selectedCategoryId) { return ( ); } if (categoriesLoading) { return (

Загружаем категории каталога...

); } if (categoriesError) { console.error('Ошибка загрузки категорий:', categoriesError); return (

Ошибка загрузки категорий

Не удалось загрузить категории каталога

{categoriesError.message}

); } const categories = categoriesData?.laximoCategories || []; if (categories.length === 0) { return (

Категории не найдены

Для данного автомобиля категории каталога недоступны

); } return (
{categories.map((category) => ( ))}

Информация о категориях

Категории узлов оригинального каталога представляют структуру каталога производителя. Каждая категория содержит узлы (агрегаты), которые в свою очередь содержат конкретные детали.

); }; export default CategoriesSection;