diff --git a/tools/mkdocs/generator.py b/tools/mkdocs/generator.py index 744d3cb..8e3661e 100644 --- a/tools/mkdocs/generator.py +++ b/tools/mkdocs/generator.py @@ -102,7 +102,8 @@ class Galaxy(): uuid=cluster.get('uuid', None), date=cluster.get('date', None), related_list=cluster.get('related', None), - meta=cluster.get('meta', None) + meta=cluster.get('meta', None), + galaxie=self.name )) return clusters @@ -119,7 +120,7 @@ class Galaxy(): return self.entry class Cluster(): - def __init__(self, description, uuid, date, value, related_list, meta): + def __init__(self, description, uuid, date, value, related_list, meta, galaxie): self.description = description self.uuid = uuid self.date = date @@ -127,6 +128,7 @@ class Cluster(): self.related_list = related_list self.meta = meta self.entry = "" + self.galaxie = galaxie def _create_title_entry(self): self.entry += f'## {self.value}\n' @@ -198,11 +200,15 @@ class Cluster(): visited = set() related_clusters = [] - if depth == 0 or not self.related_list: + if depth == 0 or not self.related_list or self.uuid in visited: return related_clusters + visited.add(self.uuid) + for cluster in self.related_list: dest_uuid = cluster["dest-uuid"] + + # Cluster is private if dest_uuid not in cluster_dict: # Check if UUID is empty if not dest_uuid: @@ -211,27 +217,28 @@ class Cluster(): private_relations_count += 1 if dest_uuid not in private_clusters: private_clusters.append(dest_uuid) - related_clusters.append((self, Cluster(value="Private Cluster", uuid=dest_uuid, date=None, description=None, related_list=None, meta=None))) + related_clusters.append((self, Cluster(value="Private Cluster", uuid=dest_uuid, date=None, description=None, related_list=None, meta=None, galaxie=None))) continue - if dest_uuid in visited: - continue - visited.add(dest_uuid) + related_cluster = cluster_dict[dest_uuid] public_relations_count += 1 if dest_uuid not in public_clusters: public_clusters.append(dest_uuid) - related_clusters.append((self, related_cluster)) - if depth > 1 or depth == -1: + related_clusters.append((self, related_cluster)) + + if (depth > 1 or depth == -1) and related_cluster.uuid not in visited: new_depth = depth - 1 if depth > 1 else -1 related_clusters += related_cluster.get_related_clusters(depth=new_depth, visited=visited) if empty_uuids > 0: empty_uuids_dict[self.value] = empty_uuids + for cluster in related_clusters: if (cluster[1], cluster[0]) in related_clusters: related_clusters.remove(cluster) + return related_clusters def _create_related_entry(self): @@ -277,9 +284,6 @@ for galaxy in galaxies: for cluster in galaxy.clusters: cluster_dict[cluster.uuid] = cluster -# test = cluster_dict['f0ec2df5-2e38-4df3-970d-525352006f2e'] -# print(test.get_related_clusters()) - def create_index(intro, contributing, galaxies): index_output = intro for galaxie in galaxies: @@ -327,3 +331,13 @@ if __name__ == "__main__": print(f"Number of empty UUIDs: {sum(empty_uuids_dict.values())}") print(f"Empty UUIDs per cluster: {empty_uuids_dict}") + # test = cluster_dict['f0ec2df5-2e38-4df3-970d-525352006f2e'] + # test = cluster_dict['d7247cf9-13b6-4781-b789-a5f33521633b'] + # clusters = test.get_related_clusters() + # print(clusters) + # print(len(clusters)) + # print("```mermaid") + # print(f"graph TD") + # for cluster in clusters: + # print(f"{cluster[0].uuid}[{cluster[0].value}] --- {cluster[1].uuid}[{cluster[1].value}]") + # print("```")