import React, { useState } from 'react'; import { LaximoCatalogInfo } from '@/types/laximo'; import QuickGroupsSection from './QuickGroupsSection'; import CategoriesSection from './CategoriesSection'; import FulltextSearchSection from './FulltextSearchSection'; interface LaximoVehicleInfo { vehicleid: string; name: string; ssd: string; brand: string; catalog: string; attributes: Array<{ key: string; name: string; value: string; }>; } interface VehiclePartsSearchSectionProps { catalogInfo: LaximoCatalogInfo; vehicleInfo: LaximoVehicleInfo; searchType: 'quickgroups' | 'categories' | 'fulltext'; onSearchTypeChange: (type: 'quickgroups' | 'categories' | 'fulltext') => void; } const VehiclePartsSearchSection: React.FC = ({ catalogInfo, vehicleInfo, searchType, onSearchTypeChange }) => { // Проверяем поддержку функций согласно документации Laximo const supportsQuickGroups = catalogInfo.features.some(f => f.name === 'quickgroups'); const supportsFullTextSearch = catalogInfo.features.some(f => f.name === 'fulltextsearch'); console.log('🔧 VehiclePartsSearchSection - Поддерживаемые функции:'); console.log('📋 Все features:', catalogInfo.features.map(f => f.name)); console.log('🚀 quickgroups поддерживается:', supportsQuickGroups); console.log('🔍 fulltextsearch поддерживается:', supportsFullTextSearch); const searchOptions = [ { id: 'quickgroups' as const, name: 'Группы быстрого поиска', description: 'Поиск запчастей по группам быстрого поиска Laximo (ListQuickGroup)', enabled: supportsQuickGroups, requiresSSD: true, icon: ( ) }, { id: 'categories' as const, name: 'Категории узлов каталога', description: 'Поиск через структуру оригинального каталога (ListCategories)', enabled: true, // Always available according to documentation requiresSSD: false, icon: ( ) }, { id: 'fulltext' as const, name: 'Поиск деталей по названию', description: 'Введите часть названия детали (SearchVehicleDetails)', enabled: supportsFullTextSearch, requiresSSD: true, icon: ( ) } ]; // Если текущий тип поиска не поддерживается, переключаемся на поддерживаемый React.useEffect(() => { const currentOption = searchOptions.find(option => option.id === searchType); if (!currentOption?.enabled) { // Приоритет: quickgroups -> categories -> fulltext if (supportsQuickGroups && vehicleInfo.ssd) { onSearchTypeChange('quickgroups'); } else { onSearchTypeChange('categories'); // categories всегда доступны } } }, [catalogInfo, vehicleInfo, searchType, onSearchTypeChange, supportsQuickGroups]); const handleSearchTypeChange = (type: 'quickgroups' | 'categories' | 'fulltext') => { const option = searchOptions.find(opt => opt.id === type); if (!option?.enabled) { console.warn(`Тип поиска ${type} не поддерживается каталогом ${catalogInfo.code}`); return; } if (option.requiresSSD && (!vehicleInfo.ssd || vehicleInfo.ssd.trim() === '')) { alert(`Для использования "${option.name}" необходимы данные автомобиля (SSD). Пожалуйста, выберите автомобиль заново.`); return; } console.log(`🔄 Переключение на тип поиска: ${type}`); onSearchTypeChange(type); }; return (
{/* Заголовок с информацией о каталоге */}

Способы поиска запчастей

Выберите предпочтительный способ поиска для каталога {catalogInfo.name}

{/* Индикатор поддерживаемых функций */}
Поддерживаемые функции:
{supportsQuickGroups && ( QuickGroups )} {supportsFullTextSearch && ( FullText )} Categories
{/* Селектор типов поиска */}
{searchOptions.map((option) => ( ))}
{/* Отображение выбранного компонента поиска */}
{searchType === 'quickgroups' && supportsQuickGroups && ( )} {searchType === 'categories' && ( )} {searchType === 'fulltext' && supportsFullTextSearch && ( )}
{/* Информационная панель */}

Информация о способах поиска

  • Группы быстрого поиска - используют функцию Laximo ListQuickGroup для быстрого доступа к категориям
  • Категории узлов каталога - навигация по структуре оригинального каталога производителя
  • Поиск по названию - полнотекстовый поиск деталей по их наименованию
{vehicleInfo.ssd ? (

✓ Данные автомобиля (SSD) доступны - все функции активны

) : (

⚠ Некоторые функции требуют данных автомобиля (SSD)

)}
); }; export default VehiclePartsSearchSection;