From 6062f7616df0eb7ff9e37c69875d1d5f76705d3b Mon Sep 17 00:00:00 2001
From: Vargha Csongor
Date: Wed, 30 Apr 2025 20:08:16 +0200
Subject: [PATCH] relationship modal and some profile edit fix
---
apps/app/src/lib/graph/FamilyEdge.svelte | 3 +-
apps/app/src/lib/profile/ProfileHeader.svelte | 18 +-
apps/app/src/lib/relationship/Modal.svelte | 261 ++++++++++++++++++
.../src/lib/relationship/ModalButtons.svelte | 36 +++
apps/app/src/lib/sidebar/hamburgerIcon.svelte | 85 +++---
apps/app/src/routes/+page.svelte | 115 +++++---
6 files changed, 432 insertions(+), 86 deletions(-)
create mode 100644 apps/app/src/lib/relationship/Modal.svelte
create mode 100644 apps/app/src/lib/relationship/ModalButtons.svelte
diff --git a/apps/app/src/lib/graph/FamilyEdge.svelte b/apps/app/src/lib/graph/FamilyEdge.svelte
index bcfe913..75eede5 100644
--- a/apps/app/src/lib/graph/FamilyEdge.svelte
+++ b/apps/app/src/lib/graph/FamilyEdge.svelte
@@ -2,7 +2,7 @@
import type { components } from '$lib/api/api.gen.ts';
import { child, spouse, parent, sibling } from '$lib/paraglide/messages';
import { getBezierPath, BaseEdge, type EdgeProps, Position } from '@xyflow/svelte';
-
+
let {
sourceX,
sourceY,
@@ -21,7 +21,6 @@
let edgeType = (
data as components['schemas']['FamilyRelationship'] & { type: string }
).type.toLowerCase();
- console.log('edgeType', edgeType);
let edgeLabel: string = $state(edgeType);
let edgeColor: string;
let srcPos;
diff --git a/apps/app/src/lib/profile/ProfileHeader.svelte b/apps/app/src/lib/profile/ProfileHeader.svelte
index acc3b97..88f37f4 100644
--- a/apps/app/src/lib/profile/ProfileHeader.svelte
+++ b/apps/app/src/lib/profile/ProfileHeader.svelte
@@ -73,7 +73,7 @@
class="h-48 w-48 rounded-lg object-cover shadow-md"
/>
{#if editorMode}
-
@@ -91,6 +92,7 @@
{last_name()}:
{#if editorMode} onChange('last_name', person.last_name)}
class="input input-sm input-bordered w-full"
/>{:else}{person.last_name ?? '-'}{/if}
@@ -98,6 +100,7 @@
{middle_name()}:
{#if editorMode} onChange('middle_name', person.middle_name)}
class="input input-sm input-bordered w-full"
/>{:else}{person.middle_name ?? '-'}{/if}
@@ -108,8 +111,9 @@
class="pika-single w-full"
id="birth_date"
bind:this={birth_date}
- bind:value={person.born}
- />
+ placeholder={person.born}
+ onchange={() => onChange('born', birth_date.value)}
+ />
{:else}{person.born ?? '-'}{/if}
@@ -118,9 +122,9 @@
type="text"
class="pika-single w-full"
id="death_date"
- placeholder={died()}
+ placeholder={person.died??died()}
bind:this={death_date}
- bind:value={person.died}
+ onchange={() => onChange('died', death_date.value)}
/>{:else}{person.died ?? '-'}{/if}
@@ -131,6 +135,7 @@
class="select select-bordered select-sm w-full"
id="biological_sex"
bind:value={person.biological_sex}
+ onchange={() => onChange('biological_sex', person.biological_sex)}
placeholder={biological_sex()}
>
@@ -146,6 +151,7 @@
{email()}:
{#if editorMode} onChange('email', person.email)}
class="input input-sm input-bordered w-full"
/>{:else}{person.email ?? '-'}{/if}
@@ -153,6 +159,7 @@
{mothers_first_name()}:
{#if editorMode} onChange('mothers_first_name', person.mothers_first_name)}
class="input input-sm input-bordered w-full"
/>{:else}{person.mothers_first_name ?? '-'}{/if}
@@ -160,6 +167,7 @@
{mothers_last_name()}:
{#if editorMode} onChange('mothers_last_name', person.mothers_last_name)}
class="input input-sm input-bordered w-full"
/>{:else}{person.mothers_last_name ?? '-'}{/if}
diff --git a/apps/app/src/lib/relationship/Modal.svelte b/apps/app/src/lib/relationship/Modal.svelte
new file mode 100644
index 0000000..6377e7c
--- /dev/null
+++ b/apps/app/src/lib/relationship/Modal.svelte
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
{
+ editorMode = !editorMode;
+ }}
+ />
+
+
+ {#if createRelationship}
+
+
+
+
+
+ {/if}
+ {#if !createRelationship}
+
+ {#each relationships as r, index}
+
+ {/each}
+ {:else}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/if}
+
+
diff --git a/apps/app/src/lib/relationship/ModalButtons.svelte b/apps/app/src/lib/relationship/ModalButtons.svelte
new file mode 100644
index 0000000..5a6f869
--- /dev/null
+++ b/apps/app/src/lib/relationship/ModalButtons.svelte
@@ -0,0 +1,36 @@
+
+
+
+
{biography()}
+
+ {#if !createMode}
+
+ {editorMode ? back() : edit()}
+
+ {/if}
+ {#if editorMode}
+ {#if createMode}
+
+ {add_relationship()}
+
+ {:else}
+
+ {save()}
+
+ {/if}
+ {/if}
+
+ {close()}
+
+
+
diff --git a/apps/app/src/lib/sidebar/hamburgerIcon.svelte b/apps/app/src/lib/sidebar/hamburgerIcon.svelte
index ccfe036..87a0e2d 100644
--- a/apps/app/src/lib/sidebar/hamburgerIcon.svelte
+++ b/apps/app/src/lib/sidebar/hamburgerIcon.svelte
@@ -1,45 +1,54 @@
-
-
(clicked = !clicked)}
+
-
+
+
+
+
+ -
+
+ {managed_profiles()}
+
+
+
+
diff --git a/apps/app/src/routes/+page.svelte b/apps/app/src/routes/+page.svelte
index d386315..30d9074 100644
--- a/apps/app/src/routes/+page.svelte
+++ b/apps/app/src/routes/+page.svelte
@@ -1,14 +1,10 @@
@@ -198,9 +209,15 @@
{
+ selectedRelationship = edge;
+ }}
onnodeclick={handleNodeClickFunc}
onnodecontextmenu={handleContextMenu}
onpaneclick={handlePaneClick}
@@ -232,6 +249,22 @@
relationshipStartID={relationshipStart}
>
{/if}
+ {#if selectedRelationship}
+ ) => {
+ onCreation(null, newEdges);
+ createRelationship = false;
+ }}
+ closeModal={() => {
+ createRelationship = false;
+ selectedRelationship = undefined;
+ relationshipStart = null;
+ }}
+ startNode={String(relationshipStart)}
+ endNode={String(selectedRelationship.target)}
+ />
+ {/if}
{#if openPersonMenu !== undefined}
{/if}