Улучшена обработка SSD в компонентах QuickDetailSection, UnitDetailsSection и KnotIn. Добавлены отладочные логи для отслеживания значений SSD и состояния загрузки данных. Обновлены условия пропуска запросов в зависимости от наличия SSD. Исправлена логика передачи SSD в компонент KnotIn с использованием значения узла или родительского SSD.
This commit is contained in:
@ -43,30 +43,72 @@ const KnotIn: React.FC<KnotInProps> = ({ catalogCode, vehicleId, ssd, unitId, un
|
||||
const router = useRouter();
|
||||
|
||||
// Получаем инфо об узле (для картинки)
|
||||
console.log('🔍 KnotIn - GET_LAXIMO_UNIT_INFO запрос:', {
|
||||
catalogCode,
|
||||
vehicleId,
|
||||
unitId,
|
||||
ssd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
|
||||
ssdLength: ssd?.length,
|
||||
skipCondition: !catalogCode || !vehicleId || !unitId || !ssd || ssd.trim() === ''
|
||||
});
|
||||
|
||||
const { data: unitInfoData, loading: unitInfoLoading, error: unitInfoError } = useQuery(
|
||||
GET_LAXIMO_UNIT_INFO,
|
||||
{
|
||||
variables: { catalogCode: catalogCode || '', vehicleId: vehicleId || '', unitId: unitId || '', ssd: ssd || '' },
|
||||
skip: !catalogCode || !vehicleId || !unitId,
|
||||
variables: {
|
||||
catalogCode,
|
||||
vehicleId,
|
||||
unitId,
|
||||
ssd
|
||||
},
|
||||
skip: !catalogCode || !vehicleId || !unitId || !ssd || ssd.trim() === '',
|
||||
errorPolicy: 'all',
|
||||
}
|
||||
);
|
||||
|
||||
// Получаем карту координат
|
||||
console.log('🔍 KnotIn - GET_LAXIMO_UNIT_IMAGE_MAP запрос:', {
|
||||
catalogCode,
|
||||
vehicleId,
|
||||
unitId,
|
||||
ssd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
|
||||
ssdLength: ssd?.length,
|
||||
skipCondition: !catalogCode || !vehicleId || !unitId || !ssd || ssd.trim() === ''
|
||||
});
|
||||
|
||||
const { data: imageMapData, loading: imageMapLoading, error: imageMapError } = useQuery(
|
||||
GET_LAXIMO_UNIT_IMAGE_MAP,
|
||||
{
|
||||
variables: { catalogCode: catalogCode || '', vehicleId: vehicleId || '', unitId: unitId || '', ssd: ssd || '' },
|
||||
skip: !catalogCode || !vehicleId || !unitId,
|
||||
variables: {
|
||||
catalogCode,
|
||||
vehicleId,
|
||||
unitId,
|
||||
ssd
|
||||
},
|
||||
skip: !catalogCode || !vehicleId || !unitId || !ssd || ssd.trim() === '',
|
||||
errorPolicy: 'all',
|
||||
}
|
||||
);
|
||||
|
||||
// Если нет необходимых данных, показываем заглушку
|
||||
if (!catalogCode || !vehicleId || !unitId) {
|
||||
if (!catalogCode || !vehicleId || !unitId || !ssd || ssd.trim() === '') {
|
||||
console.log('⚠️ KnotIn: отсутствуют необходимые данные:', {
|
||||
catalogCode: !!catalogCode,
|
||||
vehicleId: !!vehicleId,
|
||||
unitId: !!unitId,
|
||||
ssd: !!ssd,
|
||||
ssdValid: ssd ? ssd.trim() !== '' : false
|
||||
});
|
||||
|
||||
return (
|
||||
<div className="text-center py-8 text-gray-500">
|
||||
<div className="text-lg font-medium mb-2">Схема узла</div>
|
||||
<div className="text-sm">Выберите узел для отображения схемы</div>
|
||||
{process.env.NODE_ENV === 'development' && (
|
||||
<div className="text-xs text-red-500 mt-2">
|
||||
Debug: catalogCode={catalogCode}, vehicleId={vehicleId}, unitId={unitId}, ssd={ssd ? 'есть' : 'нет'}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -75,6 +117,29 @@ const KnotIn: React.FC<KnotInProps> = ({ catalogCode, vehicleId, ssd, unitId, un
|
||||
const coordinates = imageMapData?.laximoUnitImageMap?.coordinates || [];
|
||||
const imageUrl = unitInfo?.imageurl ? getImageUrl(unitInfo.imageurl, selectedImageSize) : '';
|
||||
|
||||
// Логируем успешную загрузку данных
|
||||
React.useEffect(() => {
|
||||
if (unitInfo) {
|
||||
console.log('✅ KnotIn: данные узла загружены:', {
|
||||
unitName: unitInfo.name,
|
||||
hasImage: !!unitInfo.imageurl,
|
||||
imageUrl: unitInfo.imageurl,
|
||||
processedImageUrl: imageUrl
|
||||
});
|
||||
}
|
||||
}, [unitInfo, imageUrl]);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (coordinates.length > 0) {
|
||||
console.log('✅ KnotIn: координаты карты загружены:', {
|
||||
coordinatesCount: coordinates.length,
|
||||
firstCoordinate: coordinates[0]
|
||||
});
|
||||
} else if (imageMapData) {
|
||||
console.log('⚠️ KnotIn: карта изображений загружена, но координаты пустые:', imageMapData);
|
||||
}
|
||||
}, [coordinates, imageMapData]);
|
||||
|
||||
// Масштабируем точки после загрузки картинки
|
||||
const handleImageLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {
|
||||
const img = e.currentTarget;
|
||||
@ -110,13 +175,49 @@ const KnotIn: React.FC<KnotInProps> = ({ catalogCode, vehicleId, ssd, unitId, un
|
||||
}, [parts, coordinates]);
|
||||
|
||||
if (unitInfoLoading || imageMapLoading) {
|
||||
console.log('🔄 KnotIn: загрузка данных...', {
|
||||
unitInfoLoading,
|
||||
imageMapLoading,
|
||||
unitInfoError: unitInfoError?.message,
|
||||
imageMapError: imageMapError?.message
|
||||
});
|
||||
return <div className="text-center py-8 text-gray-500">Загружаем схему узла...</div>;
|
||||
}
|
||||
|
||||
if (unitInfoError) {
|
||||
return <div className="text-center py-8 text-red-600">Ошибка загрузки схемы: {unitInfoError.message}</div>;
|
||||
console.error('❌ KnotIn: ошибка загрузки информации об узле:', unitInfoError);
|
||||
return (
|
||||
<div className="text-center py-8 text-red-600">
|
||||
Ошибка загрузки схемы: {unitInfoError.message}
|
||||
{process.env.NODE_ENV === 'development' && (
|
||||
<div className="text-xs mt-2 text-gray-500">
|
||||
GraphQL Error: {JSON.stringify(unitInfoError, null, 2)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (imageMapError) {
|
||||
console.error('❌ KnotIn: ошибка загрузки карты изображений:', imageMapError);
|
||||
}
|
||||
|
||||
if (!imageUrl) {
|
||||
return <div className="text-center py-8 text-gray-400">Нет изображения для этого узла</div>;
|
||||
console.log('⚠️ KnotIn: нет URL изображения:', {
|
||||
unitInfo: !!unitInfo,
|
||||
imageurl: unitInfo?.imageurl,
|
||||
unitInfoData: !!unitInfoData
|
||||
});
|
||||
return (
|
||||
<div className="text-center py-8 text-gray-400">
|
||||
Нет изображения для этого узла
|
||||
{process.env.NODE_ENV === 'development' && unitInfo && (
|
||||
<div className="text-xs mt-2 text-gray-500">
|
||||
Debug: unitInfo.imageurl = {unitInfo.imageurl || 'отсутствует'}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
|
Reference in New Issue
Block a user