diff --git a/frontend/src/lib/family_tree/PersonMenu.svelte b/frontend/src/lib/family_tree/PersonMenu.svelte
new file mode 100644
index 0000000..9d99dbd
--- /dev/null
+++ b/frontend/src/lib/family_tree/PersonMenu.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+ node: {id}
+
+
+
+
+
+
+
diff --git a/frontend/src/lib/family_tree/PersonNode.svelte b/frontend/src/lib/family_tree/PersonNode.svelte
index b8f7ee9..eed65ce 100644
--- a/frontend/src/lib/family_tree/PersonNode.svelte
+++ b/frontend/src/lib/family_tree/PersonNode.svelte
@@ -37,9 +37,10 @@
- {data.Lastname}
+
{data.Firstname}
{data.Middlename}
+ {data.Lastname}
diff --git a/frontend/src/lib/family_tree/setFamilyTreeNodes.ts b/frontend/src/lib/family_tree/setFamilyTreeNodes.ts
new file mode 100644
index 0000000..643fdee
--- /dev/null
+++ b/frontend/src/lib/family_tree/setFamilyTreeNodes.ts
@@ -0,0 +1,40 @@
+import { fetch_family_tree } from '$lib/family_tree/getFamilyTree';
+import { getLayoutedElements } from '$lib/family_tree/dagreLayout';
+import { AddToNodesData, AddToEdgesData } from '$lib/family_tree/dataAdapter';
+import type { Node, Edge } from '@xyflow/svelte';
+import { useEdges, useNodes } from '@xyflow/svelte';
+
+const nodes = useNodes();
+const edges = useEdges();
+
+export function setFamilyTreeNodes() {
+ console.log('fetching nodes');
+ fetch_family_tree().then((data) => {
+ let nodes_data: Node[] = [];
+ function pushNodeToData(node: Node) {
+ nodes_data.push(node);
+ }
+
+ AddToNodesData(data, 0, pushNodeToData);
+ AddToNodesData(data, 2, pushNodeToData);
+ AddToNodesData(data, 4, pushNodeToData);
+ AddToNodesData(data, 6, pushNodeToData);
+ AddToNodesData(data, 8, pushNodeToData);
+
+ let edges_data: Edge[] = [];
+ function pushEdgeToData(edge: Edge) {
+ edges_data.push(edge);
+ }
+
+ AddToEdgesData(data, 1, pushEdgeToData);
+ AddToEdgesData(data, 3, pushEdgeToData);
+ AddToEdgesData(data, 5, pushEdgeToData);
+ AddToEdgesData(data, 7, pushEdgeToData);
+
+ const layoutedElements = getLayoutedElements(nodes_data, edges_data, 'TB');
+
+ $nodes = layoutedElements.nodes;
+ $edges = layoutedElements.edges;
+ });
+ console.log('nodes fetched and set');
+}
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
index d31396c..060813a 100644
--- a/frontend/src/routes/+page.svelte
+++ b/frontend/src/routes/+page.svelte
@@ -5,52 +5,20 @@
import type { Node, Edge, NodeTypes } from '@xyflow/svelte';
import { isAuthenticated } from '../lib/stores';
import PersonNode from './../lib/family_tree/PersonNode.svelte';
+ import { setFamilyTreeNodes } from '../lib/family_tree/setFamilyTreeNodes';
import { login } from '../lib/auth';
- import { fetch_family_tree } from '$lib/family_tree/getFamilyTree';
- import { getLayoutedElements } from '$lib/family_tree/dagreLayout';
- import { AddToNodesData, AddToEdgesData } from '$lib/family_tree/dataAdapter';
- let edges_data: {
- id: string;
- source: string;
- target: string;
- data: { type: string; verified: boolean };
- }[] = [];
+
+ import PersonMenu from '$lib/family_tree/PersonMenu.svelte';
+ import PersonPanel from '$lib/family_tree/PersonPanel.svelte';
const nodes = writable([]);
const edges = writable([]);
onMount(() => {
if (!$isAuthenticated) {
- console.log('user authenticated:', $isAuthenticated);
+ console.log('user is not authenticated');
login();
} else {
- console.log('user authenticated:', $isAuthenticated);
- console.log('fetching nodes');
- fetch_family_tree().then((data) => {
- let nodes_data: Node[] = [];
- function pushNodeToData(node: Node) {
- nodes_data.push(node);
- }
-
- AddToNodesData(data, 0, pushNodeToData);
- AddToNodesData(data, 2, pushNodeToData);
- AddToNodesData(data, 4, pushNodeToData);
- AddToNodesData(data, 6, pushNodeToData);
- AddToNodesData(data, 8, pushNodeToData);
-
- let edges_data: Edge[] = [];
- function pushEdgeToData(edge: Edge) {
- edges_data.push(edge);
- }
-
- AddToEdgesData(data, 1, pushEdgeToData);
- AddToEdgesData(data, 3, pushEdgeToData);
- AddToEdgesData(data, 5, pushEdgeToData);
- AddToEdgesData(data, 7, pushEdgeToData);
-
- const layoutedElements = getLayoutedElements(nodes_data, edges_data, 'TB');
-
- $nodes = layoutedElements.nodes;
- $edges = layoutedElements.edges;
- });
+ console.log('user is authenticated');
+ setFamilyTreeNodes();
}
});
@@ -58,6 +26,8 @@
custom: PersonNode
};
+ let personPanel: {} | null;
+
let menu: { id: string; top?: number; left?: number; right?: number; bottom?: number } | null;
let width: number;
let height: number;
@@ -69,7 +39,7 @@
// Calculate position of the context menu. We want to make sure it
// doesn't get positioned off-screen.
menu = {
- id: node.id,
+ id: node.data.ID,
top: event.clientY < height - 200 ? event.clientY : undefined,
left: event.clientX < width - 200 ? event.clientX : undefined,
right: event.clientX >= width - 200 ? width - event.clientX : undefined,
@@ -85,9 +55,30 @@
-
+
-
+
+ {#if menu}
+
+ {/if}
+