diff --git a/libs/shared/lib/vis/visualizations/vis0D/Vis0D.tsx b/libs/shared/lib/vis/visualizations/vis0D/Vis0D.tsx index d43d86256b52b9b6bd7a151e5f4468c99dbfd05c..15a2c6511d60e9ccf03ff15bd8900fa74fa558ba 100644 --- a/libs/shared/lib/vis/visualizations/vis0D/Vis0D.tsx +++ b/libs/shared/lib/vis/visualizations/vis0D/Vis0D.tsx @@ -68,15 +68,16 @@ const Vis0D = forwardRef<Vis0DVisHandle, VisualizationPropTypes<Vis0DProps>>(({ useEffect(() => { if (settings.selectedEntity != '' && graphMetadata.nodes.types && settings.selectedAttribute != '' && settings.selectedStat != '') { const nodesLabels = graphMetadata.nodes.labels; + const edgesLabels = graphMetadata.edges.labels; - let attributes = []; + let attributes: string[] = []; if (nodesLabels.includes(settings.selectedEntity)) { attributes = Object.keys(graphMetadata.nodes.types[settings.selectedEntity].attributes); - } else { + } else if (edgesLabels.includes(settings.selectedEntity)) { attributes = Object.keys(graphMetadata.edges.types[settings.selectedEntity].attributes); } - if (attributes.includes(settings.selectedAttribute)) { + if (attributes.length > 0 && attributes.includes(settings.selectedAttribute)) { let statsAvailable = []; if (nodesLabels.includes(settings.selectedEntity)) { @@ -126,7 +127,6 @@ const Vis0D = forwardRef<Vis0DVisHandle, VisualizationPropTypes<Vis0DProps>>(({ const Vis0DSettings = ({ settings, graphMetadata, updateSettings }: VisualizationSettingsPropTypes<Vis0DProps>) => { const [attributeOptions, setAttributeOptions] = useState<string[]>([]); const [statsOptions, setStatsOptions] = useState<string[]>([]); - useEffect(() => { if (settings.selectedEntity === '' && graphMetadata && graphMetadata.nodes && graphMetadata.nodes.labels.length > 0) { const firstEntity = graphMetadata.nodes.labels[0]; @@ -156,18 +156,23 @@ const Vis0DSettings = ({ settings, graphMetadata, updateSettings }: Visualizatio graphMetadata.nodes.labels.length > 0 ) { const nodesLabels = graphMetadata.nodes.labels; + const edgesLabels = graphMetadata.edges.labels; // attribute management - let attributesFirstEntity = []; + let attributesFirstEntity: string[] = []; if (nodesLabels.includes(settings.selectedEntity)) { attributesFirstEntity = Object.keys(graphMetadata.nodes.types[settings.selectedEntity].attributes); - } else { + } else if (edgesLabels.includes(settings.selectedEntity)) { attributesFirstEntity = Object.keys(graphMetadata.edges.types[settings.selectedEntity].attributes); } setAttributeOptions(attributesFirstEntity); let selectedAttribute = ''; - if (settings.selectedAttribute === '' || !attributesFirstEntity.includes(settings.selectedAttribute)) { + if ( + settings.selectedAttribute === '' || + !attributesFirstEntity.includes(settings.selectedAttribute) || + attributesFirstEntity.length === 0 + ) { selectedAttribute = attributesFirstEntity[0]; updateSettings({ selectedAttribute: selectedAttribute }); } else { @@ -182,7 +187,7 @@ const Vis0DSettings = ({ settings, graphMetadata, updateSettings }: Visualizatio string, number >; - } else { + } else if (edgesLabels.includes(settings.selectedEntity)) { attributeSelectedStatistics = graphMetadata.edges.types[settings.selectedEntity].attributes[selectedAttribute].statistics as Record< string, number