-
-
Create your profile
-
- Create your profile to start building your family tree. You can add more information later.
-
+
+
Create your profile
+
To start building your family tree fill this form. You can add more information later.
diff --git a/frontend/src/lib/family_tree/dagreLayout.ts b/frontend/src/lib/family_tree/dagreLayout.ts
index cb38e98..1476561 100644
--- a/frontend/src/lib/family_tree/dagreLayout.ts
+++ b/frontend/src/lib/family_tree/dagreLayout.ts
@@ -3,14 +3,12 @@ import { Position, type Node, type Edge } from '@xyflow/svelte';
import { onMount } from 'svelte';
const dagreGraph = new dagre.graphlib.Graph();
-onMount(() => {
- dagreGraph.setDefaultEdgeLabel(() => ({}));
-});
const nodeWidth = 250;
const nodeHeight = 250;
function getLayoutedElements(nodes: Node[], edges: Edge[], direction = 'TB') {
+ dagreGraph.setDefaultEdgeLabel(() => ({}));
const isHorizontal = direction === 'LR';
dagreGraph.setGraph({ rankdir: direction });
diff --git a/frontend/src/lib/family_tree/getFamilyTree.ts b/frontend/src/lib/family_tree/getFamilyTree.ts
index d0b31ec..b5c7e32 100644
--- a/frontend/src/lib/family_tree/getFamilyTree.ts
+++ b/frontend/src/lib/family_tree/getFamilyTree.ts
@@ -12,7 +12,7 @@ user.subscribe((value) => {
async function fetch_family_tree() {
console.log(PUBLIC_API_URL);
- const response = await fetch(PUBLIC_API_URL + '/familyTree?id=8a8b9b05bdc24550a5cc73e0b55e8d7d', {
+ const response = await fetch(PUBLIC_API_URL + '/familyTree', {
method: 'GET',
headers: {
Accept: 'application/json',
diff --git a/frontend/src/lib/family_tree/setFamilyTreeNodes.ts b/frontend/src/lib/family_tree/setFamilyTreeNodes.ts
index 527ab23..8a6d146 100644
--- a/frontend/src/lib/family_tree/setFamilyTreeNodes.ts
+++ b/frontend/src/lib/family_tree/setFamilyTreeNodes.ts
@@ -4,17 +4,22 @@ import { AddToNodesData, AddToEdgesData } from '$lib/family_tree/dataAdapter';
import type { Node, Edge } from '@xyflow/svelte';
import { useEdges, useNodes } from '@xyflow/svelte';
-export function setFamilyTreeNodes(): boolean {
- const nodes = useNodes();
- const edges = useEdges();
-
+export function setFamilyTreeNodes(): {
+ nodes: Node[];
+ edges: Edge[];
+} {
console.log('fetching nodes');
let layoutedElements: {
nodes: Node[];
edges: Edge[];
} = { nodes: [], edges: [] };
- fetch_family_tree().then((data) => {
+ fetch_family_tree().then((data: []) => {
let nodes_data: Node[] = [];
+
+ if (data.length == 0) {
+ return layoutedElements;
+ }
+
function pushNodeToData(node: Node) {
nodes_data.push(node);
}
@@ -36,10 +41,8 @@ export function setFamilyTreeNodes(): boolean {
AddToEdgesData(data, 7, pushEdgeToData);
layoutedElements = getLayoutedElements(nodes_data, edges_data, 'TB');
- nodes.set(layoutedElements.nodes);
- edges.set(layoutedElements.edges);
console.log('nodes fetched and set');
});
- return layoutedElements.nodes.length > 0;
+ return layoutedElements;
}
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
index 3f1ec8a..cfc20e9 100644
--- a/frontend/src/routes/+page.svelte
+++ b/frontend/src/routes/+page.svelte
@@ -20,14 +20,19 @@
const nodes = writable
([]);
const edges = writable([]);
+
onMount(() => {
if (!$isAuthenticated) {
console.log('user is not authenticated');
login();
} else {
console.log('user is authenticated');
- if (!setFamilyTreeNodes()) {
+ let layout = setFamilyTreeNodes();
+ if (layout.nodes.length === 0) {
CreateProfilePanel = true;
+ } else {
+ nodes.set(layout.nodes);
+ edges.set(layout.edges);
}
}
});