import React, { useEffect, useState } from "react"; import { useQuery } from "@apollo/client"; import { PARTS_INDEX_SEARCH_BY_ARTICLE } from "@/lib/graphql"; interface ProductCharacteristicsProps { result?: any; } const ProductCharacteristics = ({ result }: ProductCharacteristicsProps) => { const [partsIndexData, setPartsIndexData] = useState(null); // Запрос к Parts Index для получения дополнительных характеристик const { data: partsIndexResult, loading: partsIndexLoading } = useQuery(PARTS_INDEX_SEARCH_BY_ARTICLE, { variables: { articleNumber: result?.articleNumber || '', brandName: result?.brand || '', lang: 'ru' }, skip: !result?.articleNumber || !result?.brand, errorPolicy: 'ignore' }); useEffect(() => { if (partsIndexResult?.partsIndexSearchByArticle) { setPartsIndexData(partsIndexResult.partsIndexSearchByArticle); } }, [partsIndexResult]); // Функция для рендеринга параметров из Parts Index const renderPartsIndexParameters = () => { if (!partsIndexData?.parameters) return null; return partsIndexData.parameters.map((paramGroup: any, groupIndex: number) => (
{paramGroup.params?.map((param: any, paramIndex: number) => (
{param.title}: {param.values?.map((value: any) => value.value).join(', ') || 'Нет данных'}
))}
)); }; return ( <>
{result && ( <>
Бренд: {result.brand}
Артикул: {result.articleNumber}
Название: {result.name}
{partsIndexData?.originalName && (
Оригинальное название: {partsIndexData.originalName}
)} {partsIndexData?.description && (
Описание: {partsIndexData.description}
)}
{/* Дополнительные характеристики из Parts Index */} {partsIndexLoading ? (
Загрузка характеристик...
) : ( renderPartsIndexParameters() )} )}
); }; export default ProductCharacteristics;