diff --git a/apps/app/src/lib/graph/PersonMenu.svelte b/apps/app/src/lib/graph/PersonMenu.svelte new file mode 100644 index 0000000..9eedcd5 --- /dev/null +++ b/apps/app/src/lib/graph/PersonMenu.svelte @@ -0,0 +1,67 @@ + + +
+ + diff --git a/apps/app/src/lib/graph/model.ts b/apps/app/src/lib/graph/model.ts new file mode 100644 index 0000000..9c2e912 --- /dev/null +++ b/apps/app/src/lib/graph/model.ts @@ -0,0 +1,12 @@ +export interface NodeMenu { + onClick: () => void; + deleteNode: () => void; + createRelationshipAndNode: () => void; + addRelationship: () => void; + addRecipe: (() => void) | undefined; + addAdmin: (() => void) | undefined; + top: number | undefined; + left: number | undefined; + right: number | undefined; + bottom: number | undefined; +} \ No newline at end of file diff --git a/apps/app/src/lib/graph/node_click.ts b/apps/app/src/lib/graph/node_click.ts new file mode 100644 index 0000000..ca916d6 --- /dev/null +++ b/apps/app/src/lib/graph/node_click.ts @@ -0,0 +1,14 @@ +import type { components } from '$lib/api/api.gen'; +import type { Node } from '@xyflow/svelte'; + +export function handleNodeClick(set_panel_options:(person:components['schemas']['PersonProperties']&{id:number})=>void): ({ + detail: { event, node } +}: { + detail: { event: MouseEvent; node: Node }; +}) => void { + return ({ detail: { event, node } }) => { + event.preventDefault(); + node.data.id = Number(node.id); + set_panel_options(node.data as components['schemas']['PersonProperties']&{id:number}); + } +} \ No newline at end of file diff --git a/apps/app/src/lib/profile/LifeEventsTimeline.svelte b/apps/app/src/lib/profile/LifeEventsTimeline.svelte new file mode 100644 index 0000000..4415a4b --- /dev/null +++ b/apps/app/src/lib/profile/LifeEventsTimeline.svelte @@ -0,0 +1,26 @@ + + +{#if draftPerson.life_events?.length} +{event.description}
+ {#if event.to} +{until()} {event.to}
+ {/if} ++ {(msg as any)[key]() ?? key}: + {#if editorMode} + + {:else} + {JSON.stringify(value) ?? '-'} + {/if} +
+{first_name()}: {#if editorMode}{:else}{draftPerson.first_name ?? '-'}{/if}
+{last_name()}: {#if editorMode}{:else}{draftPerson.last_name ?? '-'}{/if}
+{middle_name()}: {#if editorMode}{:else}{draftPerson.middle_name ?? '-'}{/if}
+{born()}: {#if editorMode}{:else}{draftPerson.born ?? '-'}{/if}
+{biological_sex()}: {#if editorMode}{:else}{draftPerson.biological_sex ?? '-'}{/if}
+{email()}: {#if editorMode}{:else}{draftPerson.email ?? '-'}{/if}
+Limit: {#if editorMode}{:else}{draftPerson.limit ?? '-'}{/if}
+{mothers_first_name()}: {#if editorMode}{:else}{draftPerson.mothers_first_name ?? '-'}{/if}
+{mothers_last_name()}: {#if editorMode}{:else}{draftPerson.mothers_last_name ?? '-'}{/if}
+